AT510716B1 - Reiner allokations-cache für echtzeitsysteme - Google Patents
Reiner allokations-cache für echtzeitsysteme Download PDFInfo
- Publication number
- AT510716B1 AT510716B1 AT5012011A AT5012011A AT510716B1 AT 510716 B1 AT510716 B1 AT 510716B1 AT 5012011 A AT5012011 A AT 5012011A AT 5012011 A AT5012011 A AT 5012011A AT 510716 B1 AT510716 B1 AT 510716B1
- Authority
- AT
- Austria
- Prior art keywords
- cache
- memory
- instructions
- explicit
- memory contents
- Prior art date
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
österreichisches Patentamt AT510 716B1 2012-06-15
Beschreibung
REINER ALLOKATIONS-CACHE FÜR ECHTZEITSYSTEME
[0001] 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 Ausführungszeit 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.
[0002] 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 Speicher-Hierarchie, dafür aber deutlich schneller abgefragt werden kann.
[0003] Ein Cache besteht aus dem eigentlichen Datenspeicher sowie zusätzlichem Speicher für die Information, zu welcher 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).
[0004] Gleichzeitig birgt diese Ersetzungsstrategie das eigentliche Problem für die Vorhersagbarkeit konventioneller Caches: Sie 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 Programmverläufe durchgespielt werden müssten.
[0005] Neben den konventionellen Caches mit deren schwer vorhersagbaren dynamischen Austauschstrategien 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 Softwareaufwand betrieben werden muss, um das Scratchpad anzusteuern.
[0006] 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.
[0007] 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 1 /5 österreichisches Patentamt AT510 716B1 2012-06-15 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.
[0008] 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.
[0009] 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 Speicherzugriffen 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 allokiert. 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.
[0010] 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.
[0011] 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. (Trashing, Capacity misses) [0012] 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 Speicherinhalte reserviert werden, aber die Restkapazität des Caches trotzdem automatisch genutzt werden.
[0013] 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 zwischenzuspeichern.
[0014] 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.
[0015] 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. 2/5
Claims (8)
- österreichisches Patentamt AT510 716B1 2012-06-15 Danach werden durch Schleifen- oder Rekursionsstrukturen die Speicherbereiche B-F immer wieder referenziert, wobei Speicherbereich F häufiger referenziert wird als die anderen Speicherbereiche. [0016] Fig. 4 demonstriert den Einsatz der Beibehalte-Anweisung (Keep): in 401 wird der Cache gelöscht. 402 zeigt, wie im Verlauf von 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öschanweisung in 404 erhalten. [0017] Durch das Einfügen der Del, DelTrg, Res und Keep-Anweisungen 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. [0018] Ökonomische Aspekte [0019] + Der Reine Allokations-Cache ist mit relativ geringem Hardwareaurwand realisierbar. Er lässt sich daher gut in bestehende Hardware-Designs integrieren. [0020] + Es müssen nur wenige Kontrollanweisungen zum Löschen des Caches eingefügt werden. Verfahren zum Einfügen der Anweisungen sind einfach und daher wirtschaftlich zu implementieren. [0021] + Durch die Möglichkeit, die Kontrollanweisungen per Hand oder auch durch den Linker einzufügen, ist der Cache unabhängig von einem bestimmten Compiler nutzbar. [0022] + 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. [0023] + Die Reserve-Anweisung ermöglicht es, mittels einfacher abschnittsweiser Analyse die Cache-Kapazität besser zu nutzen als es die bekannten Ersetzungsmechanismen können. [0024] + Die Reservierungs- Anweisung ermöglicht es, auf einfache Weise das sogenannte Cache-Trashing (zyklische Ersetzung) zu vermeiden, wodurch die Ausführungszeit im Vergleich zum vollständig autonomen Cache deutlich verbessert wird. 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. 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 zwischenzuspeichern.
- 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 zwischenzuspeichern, wenn auf die Adresse oder den Adressbereich zugegriffen wird. 3/5 österreichisches Patentamt AT510 716B1 2012-06-15
- 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 durchgeführt werden kann.
- 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. 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. 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. Cache zur Zwischenspeicherung von beliebiger Art von Speicherinhalten, dadurch gekennzeichnet, dass dieser nach einem der Verfahren nach Ansprüchen 1-7 betrieben wird. Hierzu 1 Blatt Zeichnungen 4/5
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 |
---|---|
AT510716A4 AT510716A4 (de) | 2012-06-15 |
AT510716B1 true AT510716B1 (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)
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 |
-
2011
- 2011-04-08 AT AT5012011A patent/AT510716B1/de not_active IP Right Cessation
Patent Citations (5)
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 |
---|---|
AT510716A4 (de) | 2012-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69719239T2 (de) | Hardware-Anordnung zur optimierten Vorausholung von Befehlen und Daten | |
DE69816044T2 (de) | Zeitstrafen-basierende cache-speicherungs- und ersetzungs-techniken | |
DE69906006T2 (de) | Datenverarbeitungs-schaltung mit pufferspeicher | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE69129872T2 (de) | Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher | |
DE102012103869B4 (de) | Optimierter Flash-basierender Cache-Speicher | |
DE10393481B4 (de) | Verfahren und Vorrichtung zum Management einer Cache-Umgehung | |
DE69032781T2 (de) | System und Verfahren zur Optimierung von Cachespeicherung in einem auf Plattenspeicher basierendem Rechnersystem | |
DE69935737T2 (de) | Verfahren und gerät um zeitliche und feste daten in einer einzelspeicherstruktur zu verwalten | |
DE2547488C2 (de) | Mikroprogrammierte Datenverarbeitungsanlage | |
DE69515484T2 (de) | Vorgezogener datenzugriff für script-basierte multimediasysteme | |
EP1228432B1 (de) | Verfahren zur dynamischen speicherverwaltung | |
DE3726192A1 (de) | Stacksteuerung | |
DE112009004503T5 (de) | Optimierung der zugriffszeit von auf speichern gespeicherten dateien | |
DE4345028A1 (de) | Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen | |
DE102013210719A1 (de) | Verfahren und Systeme zum Verwalten von Cache-Speichern | |
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 | |
DE4034009A1 (de) | Verfahren zur befehlsabrufsteuerung | |
EP1182560A2 (de) | Prozessor-Speicher-System | |
DE4323929A1 (de) | Software-geführtes Mehrebenen-Cache-Speichersystem | |
EP0579633B1 (de) | Verfahren zum maschinellen erstellen eines aus mehreren programmteilen bestehenden programmes | |
EP2021928B1 (de) | Verfahren und vorrichtung zur beschleunigung von prozessor-zugriffen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM01 | Lapse because of not paying annual fees |
Effective date: 20160408 |