AT510716A4 - Reiner allokations-cache für echtzeitsysteme - Google Patents

Reiner allokations-cache für echtzeitsysteme Download PDF

Info

Publication number
AT510716A4
AT510716A4 AT5012011A AT5012011A AT510716A4 AT 510716 A4 AT510716 A4 AT 510716A4 AT 5012011 A AT5012011 A AT 5012011A AT 5012011 A AT5012011 A AT 5012011A AT 510716 A4 AT510716 A4 AT 510716A4
Authority
AT
Austria
Prior art keywords
cache
memory
memory contents
explicit
address
Prior art date
Application number
AT5012011A
Other languages
English (en)
Other versions
AT510716B1 (de
Inventor
Raimund Dr Kirner
Albrecht Dipl Ing Kadlec
Original Assignee
Albrecht Dipl Ing Kadlec
Raimund Dr Kirner
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 Albrecht Dipl Ing Kadlec, Raimund Dr Kirner filed Critical Albrecht Dipl Ing Kadlec
Priority to AT5012011A priority Critical patent/AT510716B1/de
Application granted granted Critical
Publication of AT510716B1 publication Critical patent/AT510716B1/de
Publication of AT510716A4 publication Critical patent/AT510716A4/de

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Für Echtzeitsysteme ist die Bestimmung der maximalen Programmausführungszeit (engl. Worst-Case Execution Time, WCET) von primärer Notwendigkeit. Zur Bestimmung der WCET ist die zeitliche Vorhersagbarkeit der Hardwarekomponenten essentiell. Bei konventionellen Caches ist der tatsächliche Zustand zu einem bestimmten Zeitpunkt schwer vorhersagbar. Andere bisher vorgeschlagene vorhersagbare Caches benötigen relativ aufwendige Verfahren und nicht vernachlässigbaren Laufzeit-Aufwand für ihre explizite Verwaltung. Das in dieser Erfindung vorgeschlagene Cache-Verfahren ist sowohl zeitlich gut vorhersagbar als auch mittels einfacher Algorithmen und weniger eingefügter Anweisungen verwendbar. Der Cache wird automatisch bei Speicherzugriffen gefüllt, es wird jedoch keine automatische Verdrängung von bereits geladenen Inhalten vorgenommen. Das Löschen des Caches wird mit expliziten Anweisungen durchgeführt. Das Cache-Verfahren ist für beliebige Speicherinhalte anwendbar, z.B. etwa für Instruktions-, Daten- oder kombinierte Instruktions- und Daten-Caches.

Description

Reiner Allokations-Cache für Echtzeitsysteme
Raimund Kimer, AlbrechtKadlec
Reiner Allokations-Cache für Echtzeitsysteme
Bei der Erstellung von Echtzeitsystemen ist die Korrektheit und die Rechtzeitigkeit nachzuweisen. Die Bestimmung der Rechtzeitigkeit wird über die Schedulability-Analyse geführt. Diese benötigt die maximale Ausfuhrungszeit unter schlechtesten Bedingungen (engl. Worst-Case Execution Time, WCET) als Berechnungsgrundlage. Die Bestimmung der WCET (Zeitanalyse) ist heute die schwierigste Aufgabe bei der Erstellung eines Echtzeitsystems. Die Gründe liegen vor allem in der Komplexität moderner Prozessoren, die während der Ausführung automatisch unterschiedlichste Optimierungsmaßnamen vornehmen. Diese Optimierungen sind spekulativer Natur: Es wird anhand der bisherigen Daten oder Adressen entschieden, ob bestimmte Werte für zukünftige Verwendungen zwischengespeichert werden oder es wird ein Ergebnis angenommen, bevor dieses komplett berechnet wurde. Diese auf konkreten Werten zur Laufzeit basierenden Spekulationen sowie ihre Interaktionen vorherzusagen bildet das große Problem bei der Bestimmung der WCET.
Eine weit verbreitete Optimierungsmaßnahme ist das Zwischenspeichern von verwendeten Daten oder Instruktionen in einem sogenannten Cache-Speicherbereich der zwar deutlich kleiner ist als die größere nächste Speicherebene der Spei eher-Hierarchie, dafür aber deutlich schneller abgefragt werden kann.
Ein Cache besteht aus dem eigentlichen Datenspeicher sowie zusätzlichem Speicher für die Information, zu weicher Adresse im Hauptspeicher die Daten gehören, ob sie modifiziert wurden, sowie Zusatz-Informationen für die zum Cache gehörige Ersetzungsstrategie. Diese Ersetzungsstrategie bestimmt im Fall, dass der Cache schon vollständig belegt ist, welche Daten durch die neu geladenen Daten ersetzt werden. Bisher verwendete typische Ersetzungs-Strategien sind Least-recently-used (LRU), Round-Robin (RR), First-In-First-Out (FIFO), sowie Varianten davon, wie z.B. Pseudo-LRU (PLRU) oder Pseudo-RR (PRR).
Gleichzeitig birgt diese Ersetzungsstrategie das eigentliche Problem für die Vorhersagbarkeit konventioneller Caches: Sic verwendet die jüngste Vergangenheit (was wurde gerade verwendet) um die nächste Zukunft vorherzusagen (was wird vermutlich wieder benötigt werden). Ihre Entscheidung trifft sie auf der Basis der konkreten gerade vorliegenden Daten und Adressen dieser Daten. Dies ist vor der Ausführung schwer vorherzusagen, da der schlechteste Fall nicht von vornherein bekannt ist und daher für alle möglichen Eingangsdaten alle möglichen Programm Verläufe durchgespielt werden müssten.
Neben den konventionellen Caches mit deren schwer vorhersagbaren dynamischen Austauschstrategjen existieren aber auch schon Ansätze, um das Cacheverhalten besser vorhersagbar zu machen. Das ist einerseits das Sperren von Caches (engl. Cache Locking), womit verhindert wird, dass der Cacheinhalt dynamisch überschrieben werden kann. Cache Locking wird oft auch in Kombination mit expliziten Laden des Caches (engl. Prefetching) genutzt, wobei die Idee des Prefetching ist, dass ein explizit gewählter Inhalt in den Cache geladen wird, was vorteilhaft für die Analysierbarkeit des Cache-Verhaltens ist. All diese beschriebenen Ansätze haben gemein, dass die Cache-Elemente nur indirekt angesprochen werden, d.h., über die Adresse im Hauptspeicher. Es gibt aber auch den Ansatz von explizitem schnellen Zwischenspeicher (engl. Scratchpad), welcher über einen eigenen Adressbereich explizit geschrieben bzw. ausgelesen wird. Der Nachteil von Scratchpad-Ansätzen ist, dass ein relativ hoher Softwareaufvvand betrieben werden muss, um das Scratchpad anzusteuem.
Die hier vorliegende Erfindung, genannt Reiner Allokations-Cache, verbessert die Vorhersagbarkeit des Caches mit möglichst einfachen Änderungen an bestehender Hardware und vereinfacht damit die Zeitanalyse, erhält dabei aber das Optimierungspotential des Caches aufrecht.
Die vorliegende Erfindung ist dadurch motiviert, dass ein Teil der Komplexität von der Hardware in die Software verlagert wird: Anstelle der Ersetzungsstrategie in der Hardware treten spezielle Anweisungen zu Steuerung des Caches, die in das Programm einfügt werden: z.B. vom Programmierer selbst oder vom Compiler und / oder Linker anhand einer speziellen Analyse. Dadurch sind alle Entscheidungen die den Cache-Inhalt betreffen schon vor der Laufzeit bekannt und können bei der Zeitanalyse auf einfache Weise berücksichtigt werden. Diese speziellen Anweisungen sind allerdings einfacher zu integrieren, als im Fall von Scratchpad-Speichern. Weiters muss, im Gegensatz zu den Prefetch-Ansätzen, auch nicht explizit spezifiziert werden, welche Speicherbereiche geladen werden.
Um die Änderungen an der bestehenden Hardware minimal zu halten und den Prozessor auch für Nicht-Echtzeitsysteme wie bisher einsetzen zu können, kann die Ersetzungsstrategie abschaltbar gemacht werden. Dies erlaubt somit sowohl den bisherigen konventionellen Betriebsmodus als auch den zeitlich vorhersagbaren Modus des Reinen Allokations-Caches.
Fig. 1 zeigt die Funktionsweise des Reinen Allokations-Caches. Nach Ausführung einer expliziten Löschanweisung (Del) ist der Cache geleert, wie in 101 gezeigt. 102 zeigt, wie im Verlauf von sequentiellen Speicherzugriflen diese im Cache zwischengespeichert werden. 103 zeigt dann den Fall, dass wenn der Cache bereits gefüllt ist, weitere Speicherzugriffe (E) nicht im Cache zwischengespeichert werden. Erst nach explizitem durch das Programm angestoßenem Löschen werden die Cache-Blöcke erneut allokicrt. 104 zeigt die Verwendung der expliziten Löschanweisung mit Trigger (DelTrg(B)), womit der Cache gelöscht wird aber erst wieder mit der Zwischenspeicherung beginnt, wenn ein Zugriff innerhalb des Adressbereiches B stattfindet.
Fig. 2 zeigt die Funktionsweise des Reinen Allokations-Caches mit der optionalen Reservierungs-Anweisung;. Nach Ausführung einer expliziten Löschanweisung (Del) ist der Cache geleert, wie in 201 gezeigt. 202 zeigt die Reservierungs-Anweisung, die den sehr häufig verwendeten Speicherbereich E vorab im Cache reserviert. 203 zeigt nun, wie die Zugriffs-Sequenz ABCDE die verbleibende Cache-Kapazität nutzt und nur der Speicherbereich D nicht im Cache alloziert wird.
Dieser Ansatz ist speziell dann sinnvoll, wenn in einer Schleife mehr Daten referenziert werden, als der Cache Zwischenspeichern kann: Bei einem herkömmlichen Cache mit Ersetzungsstrategie (z.B. LRU, RR) würde die automatische Ersetzungsstrategie die Daten zyklisch ersetzen, was zu unnötig vielen Speichertransfers führen würde, da die jeweils gerade ersetzten Daten im nächsten Schleifendurchlauf wieder geladen werden müssen. (Hashing, Capacity misses)
Der Reine Allokations-Cache vermeidet dies, würde aber nur die Speicherbereiche Zwischenspeichern, die am Anfang des ersten Schleifendurchlaufs referenziert werden. Mittels der Reservierungs-Anweisung kann der Cache für wichtigere Speichcrinhalte reserviert werden, aber die Restkapazität des Caches trotzdem automatisch genutzt werden.
Mittels der Reservierungs-Anweisung Res (E) (202) kann in Fig. 2 dem öfter verwendeten Speicherbereich E der Vorzug vor dem seltener verwendeten Speicherbereich D gegeben werden (203). Dies wäre ohne die Reservierungs-Anweisung nicht möglich, da D zuerst referenziert wird und daher aufgrund von noch ausreichender Cache-Kapazität automatisch im Cache alloziert würde, wodurch die Cache-Kapazität nicht mehr ausreichen würde auch noch den Speicherbereich E zwischenzuspeichem.
Die Reservierungs-Anweisung kann auf unterschiedliche Arten implementiert werden: z,B. sofortiges Laden oder auch ledigliches Reservieren des Cache-Bereiches, wobei bei letzterem der tatsächliche Ladevorgang erst beim tatsächlichen ersten Zugriff auf den Adressbereich erfolgt.
Fig. 3 demonstriert den gemeinsamen Einsatz von Trigger- und Reservierungs-Anweisung: in 301 wird der Cache gelöscht und für den Einsatz ab Zugriff B vorbereitet. Danach wird in 302 Cache-Speicher für den häufiger verwendeten Speicherbereich F reserviert, gekennzeichnet als „(F)“. 303 zeigt dann den Cache-Inhalt nach dem angegebenen Zugriffsmuster: A verkörpert hier initiale Zugriffe, die nur einmal am Beginn der Sequenz stattfinden. Danach werden durch Schleifen- oder Rekursions Strukturen die Speicherbereiche B-F immer wieder referenziert, wobei Speicherbereich F häufiger referenziert wird als die anderen Speicherbereiche.
Fig. 4 demonstriert den Einsatz der Beibehalte-Anweisung (Keep): in 401 wird der Cache gelöscht. 402 zeigt, wie im Verlauf vun sequentiellen Speicherzugriffen diese im Cache zwischengespeichert werden. Danach wird in 403 der Bereich B markiert, gekennzeichnet als ,,[B]“. Dadurch bleibt B auch nach der Lösch an Weisung in 404 erhalten.
Durch das Einfugen der Del, DelTrg, Res und Keep-An weis ungen vor der Schleife wird kein zusätzlicher Code in der Schleife eingefügt, der die Schleife verlangsamen würde, wie dies bei Cache-Locking der Fall wäre. Durch die Orientierung an Programmstrukturen wie Schleifen, Rekursion, Bedingungen, Unterprogrammaufrufen, ist das Einfügen der Cache-Steuerungs-Anweisungen mittels einfacher Analysen zur Programm-Übersetzungszeit möglich. Ökonomische Aspekte + Der Reine Allokations-Cache ist mit relativ geringem Hardwareaufwand realisierbar. Er lässt sich daher gut in bestehende Hardware-Designs integrieren. + Es müssen nur wenige Kontrollanweisungen zum Löschen des Caches eingefügt werden. Verfahren zum Einfugen der Anweisungen sind einfach und daher wirtschaftlich zu implementieren. + Durch die Möglichkeit, die Kontrollanweisungen per Hand oder auch durch den Linker einzufiigen, ist der Cache unabhängig von einem bestimmten Compiler nutzbar. + Durch Abschalten oder Weglassen der Ersetzungsmechanismen wird die Dynamik des Caches reduziert, was die WCET Analyse vereinfacht Durch die expliziten Löschanweisungen kann die Analyse abschnittsweise auf Segmenten, d.h. zwischen zwei Löschanweisungen erfolgen. + Die Reserve-Anweisung ermöglicht es, mittels einfacher abschnittsweiser Analyse die Cache-Kapazität besser zu nutzen als es die bekannten Ersetzungsmechanismen können. + Die Reservierungs-Anweisung ermöglicht es, auf einfache Weise das sogenannte Cachc-T rashing (zyklische Ersetzung) zu vermeiden, wodurch die Ausftihrungszeit im Vergleich zum vollständig autonomen Cache deutlich verbessert wird.

Claims (10)

  1. Patentansprüche 1. Verfahren zum Betrieb eines Caches, dadurch gekennzeichnet, dass beim Speicherzugriff die Speicherinhalte automatisch in diesem Cache gespeichert werden, vorausgesetzt dass im Cache noch Speicherplatz verfügbar ist; ist bei einem Speicherzugriff im dazugehörigen Cachebereich kein Speicherplatz mehr verfügbar, werden solange keine zugehörigen Speicherinhalte im Cache abgelegt, bis wieder mit einer expliziten Anweisung Speicherplatz im Cache freigegeben wird.
  2. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass Speicherplatz im Cache mit einer expliziten Anweisung komplett oder teilweise freigegeben werden kann, sodass danach der Cache wieder beginnt, bei weiteren Speicherzugriffen die Speicherinhalte zwischen-zuspeichem.
  3. 3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass für den Cache mit einer oder mehreren expliziten Anweisungen eine Adresse oder ein Adressbereich gesetzt werden kann, sodass sich der Cache in einem Wartemodus befindet und erst dann wieder beginnt, Speicherinhalte zwischenzuspeichem, wenn auf die Adresse oder den Adressbereich zugegriffen wird.
  4. 4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass das Löschen des Cacheinhaltes und das Setzen der Adresse oder des Adressbereichs mit einer einzigen Anweisung durchgefiihrt werden kann.
  5. 5. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass mit einer oder mehreren Anweisungen zu einem Adressbereich gehörende Speicherinhalte im Cache markiert werden, sodass sie beim nächsten Freigeben von Speicherplatz im Cache nicht freigegeben werden.
  6. 6. Verfahren nach einem der Ansprüche 1-5, dadurch gekennzeichnet, dass mit einer oder mehreren expliziten Anweisungen Teile des Caches für Speicherinhalte von einer explizit angegebenen Adresse oder einem explizit angegebenen Adressbereich reserviert werden.
  7. 7. Verfahren nach einem der Ansprüche 1-6, dadurch gekennzeichnet, dass auch ein herkömmlicher Betriebsmodus mit automatischem Austausch von Speicherinhalten im Cache unterstützt wird. Ein herkömmlicher Betriebsmodus kann optional auch Mechanismen für das Vorausladen oder das Sperren von Cachebereichen enthalten, muss aber nicht. Mit expliziten Anweisungen kann zwischen dem Betriebsmodus mit automatischem Austausch und dem Betriebsmodus nach Anspruch 3 umgeschalten werden.
  8. 8. Cache zur Zwischenspeicherung von beliebiger Art von Speicherinhalten, dadurch gekennzeichnet, dass dieser nach einem der Verfahren nach Ansprüchen 1-7 betrieben wird.
  9. 9. Instruktions-Cache, dadurch gekennzeichnet, dass dieser nach einem der Verfahren nach Ansprüchen 1-8 betrieben wird.
  10. 10. Daten-Cache, dadurch gekennzeichnet, dass dieser nach einem der Verfahren nach Ansprüchen 1-8 betrieben wird.
AT5012011A 2011-04-08 2011-04-08 Reiner allokations-cache für echtzeitsysteme AT510716B1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AT5012011A AT510716B1 (de) 2011-04-08 2011-04-08 Reiner allokations-cache für echtzeitsysteme

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AT5012011A AT510716B1 (de) 2011-04-08 2011-04-08 Reiner allokations-cache für echtzeitsysteme

Publications (2)

Publication Number Publication Date
AT510716B1 AT510716B1 (de) 2012-06-15
AT510716A4 true AT510716A4 (de) 2012-06-15

Family

ID=46396477

Family Applications (1)

Application Number Title Priority Date Filing Date
AT5012011A AT510716B1 (de) 2011-04-08 2011-04-08 Reiner allokations-cache für echtzeitsysteme

Country Status (1)

Country Link
AT (1) AT510716B1 (de)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3743890A1 (de) * 1987-03-30 1988-10-27 Ibm Verfahren zum schnellen eroeffnen von plattendateien
JP2007094735A (ja) * 2005-09-28 2007-04-12 Canon Inc オペレーティングシステム、キャッシュメモリの制御方法、プログラム及び記憶媒体
US20070162693A1 (en) * 2006-01-12 2007-07-12 Samsung Electronics Co., Ltd. Hybrid hard disk drive control method and recording medium and apparatus suitable therefor
US20080104328A1 (en) * 2006-10-31 2008-05-01 Nec Corporation Data transfer device, data transfer method, and computer device
DE102008048421A1 (de) * 2007-09-28 2009-04-09 Intel Corporation, Santa Clara Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3743890A1 (de) * 1987-03-30 1988-10-27 Ibm Verfahren zum schnellen eroeffnen von plattendateien
JP2007094735A (ja) * 2005-09-28 2007-04-12 Canon Inc オペレーティングシステム、キャッシュメモリの制御方法、プログラム及び記憶媒体
US20070162693A1 (en) * 2006-01-12 2007-07-12 Samsung Electronics Co., Ltd. Hybrid hard disk drive control method and recording medium and apparatus suitable therefor
US20080104328A1 (en) * 2006-10-31 2008-05-01 Nec Corporation Data transfer device, data transfer method, and computer device
DE102008048421A1 (de) * 2007-09-28 2009-04-09 Intel Corporation, Santa Clara Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen

Also Published As

Publication number Publication date
AT510716B1 (de) 2012-06-15

Similar Documents

Publication Publication Date Title
DE10393481B4 (de) Verfahren und Vorrichtung zum Management einer Cache-Umgehung
DE4225228C2 (de) Vorabrufpuffer und einen derartigen Vorabrufpuffer verwendendes Informationsverarbeitungssystem
DE10084556B4 (de) Optimierte Ausführung von statisch sehr wahrscheinlich vorhergesagten Verzweigungsbefehlen
DE102012103869B4 (de) Optimierter Flash-basierender Cache-Speicher
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE60308201T2 (de) Datenverarbeitungssystem mit externen und internen anweisungssätzen
DE69935737T2 (de) Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten
DE2547488C2 (de) Mikroprogrammierte Datenverarbeitungsanlage
DE3726192A1 (de) Stacksteuerung
DE4345028A1 (de) Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE112009004503T5 (de) Optimierung der zugriffszeit von auf speichern gespeicherten dateien
DE102009051388A1 (de) Technik zur Förderung effizienter Befehlsfusion
DE10393260T5 (de) Nachdurchgangs-Binäranpassung für eine auf Software basierende spekulative Vorberechnung
DE102012210895A1 (de) Vorhersage der ungeordneten Parallelverarbeitung der Befehle von Threads in einem Multithread-Prozessor
DE102014017744A1 (de) Weiche partitionierung eines registerspeicher-caches
DE10306051A1 (de) Kernparallele Ausführung mit unterschiedlichen Optimierungscharakteristika, um den dynamischen Ausführungsweg zu verringern
DE19533962B4 (de) Schaltung zum vorauseilenden Holen von Befehlen/Daten mit einem Prefetch-Cache für Befehle/Daten, auf die nicht zugegriffen worden ist
EP1079307A1 (de) Verfahren zum Betrieb eines Speichersystems sowie Speichersystem
AT510716B1 (de) Reiner allokations-cache für echtzeitsysteme
DE102009004810A1 (de) Verfahren zum Ausführen eines oder mehrerer Programme auf einem Mehrkernprozessor und Mehrkernprozessor
EP1182560A2 (de) Prozessor-Speicher-System
DE102009032071A1 (de) Technik für das Disponieren von Threads
EP0579633B1 (de) Verfahren zum maschinellen erstellen eines aus mehreren programmteilen bestehenden programmes
DE102014012155A1 (de) Verbesserte verwendung von speicherressourcen

Legal Events

Date Code Title Description
MM01 Lapse because of not paying annual fees

Effective date: 20160408