DE19643688A1 - Cache memory with conflict free parallel access - Google Patents
Cache memory with conflict free parallel accessInfo
- Publication number
- DE19643688A1 DE19643688A1 DE19643688A DE19643688A DE19643688A1 DE 19643688 A1 DE19643688 A1 DE 19643688A1 DE 19643688 A DE19643688 A DE 19643688A DE 19643688 A DE19643688 A DE 19643688A DE 19643688 A1 DE19643688 A1 DE 19643688A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- memory
- address
- cache
- block
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Die Erfindung betrifft eine Cachespeichereinheit zur Verwen dung in einem Parallelprozessor nach dem Oberbegriff des An spruchs 1.The invention relates to a cache memory unit for use application in a parallel processor according to the preamble of the application saying 1.
Durch die Fortschritte der Halbleitertechnologie ist es heute möglich, Mikroprozessoren mit mehreren, parallel arbeitenden Verarbeitungseinheiten monolithisch zu integrieren und damit eine Verarbeitungsleistung von mehreren Gigaoperationen pro Sekunde zu erreichen. Derartige Prozessoren benötigen lei stungsfähige Speicherarchitekturen, um die aus der hohen Ver arbeitungsgeschwindigkeit resultierende Datenrate bereitstel len zu können. Um den Implementierungsaufwand für einen solchen Prozessor möglichst gering zu halten, werden oft meh rere Verarbeitungseinheiten eines solchen Prozessors einer ge meinsamen Steuerung zugeordnet, wobei diese dann synchroni siert identische Operationen auf unterschiedlichen Daten ausführen. Bekannte Techniken sind hier SIMD (Single Instruc tion Stream Multiple Data Stream)-Prozessoren, bei der alle vorhandenen Verarbeitungseinheiten einer zentralen Steuerung zugeordnet werden oder geclusterte SIMD-Architekturen (Mul tiple SIMD: MSIMD), wobei jeweils Gruppen von Verarbeitungs einheiten auf Dauer oder für einen bestimmten Zeitraum einer Steuerung zugeordnet werden und damit synchron arbeiten.With the advances in semiconductor technology, it is today possible microprocessors with several, working in parallel To integrate processing units monolithically and thus a processing power of several giga operations per Second to reach. Such processors require lei sustainable storage architectures to take advantage of the high ver provide the resulting data rate len. To the implementation effort for a Keeping such a processor as small as possible is often meh rere processing units of such a processor a ge assigned common control, which then synchronized identical operations on different data To run. Known techniques are SIMD (Single Instruc tion stream multiple data stream) processors, in which all existing processing units of a central control assigned or clustered SIMD architectures (Mul tiple SIMD: MSIMD), each with groups of processing units permanently or for a certain period of time Control can be assigned and work synchronously.
Die parallele Ausführung eines Algorithmus auf einer solchen synchronisierten Gruppe von Verarbeitungseinheiten, insbeson dere von solchen der digitalen Signalverarbeitung, führt zu charakteristischen Zugriffsmustern der parallelen Verarbei tungseinheiten auf die zu verarbeitenden Daten. Bei der Bear beitung gemeinsamer zweidimensionaler Datenstrukturen werden häufig Zugriffe in Form einer Matrix mit Distanzen 2x, x = 0, 1, 2, . . . zwischen den Elementen benötigt, siehe dazu auch die Dissertation von K. Rönner, "Eine für Bildverarbeitungsverfah ren optimierte hochparalle RISC-Architektur", VDI-Verlag 1995, pp. 15-18.The parallel execution of an algorithm on such a synchronized group of processing units, in particular that of digital signal processing, leads to characteristic access patterns of the parallel processing units to the data to be processed. When processing common two-dimensional data structures, accesses in the form of a matrix with distances 2 x , x = 0, 1, 2,. . . between the elements, see also the dissertation by K. Rönner, "A highly parallel RISC architecture optimized for image processing processes", VDI-Verlag 1995, pp. 15-18.
Um die für Parallelprozessoren benötigte hohe Speicherband breite bereitzustellen, müssen die während eines Zugriffszy klus der parallelen Verarbeitungseinheiten benötigten Daten möglichst während einer einzigen Speicherzykluszeit bereitge stellt werden. Dies kann dadurch erreicht werden, indem die Daten in geeigneter Weise auf eine Anzahl von Speicherbänken verteilt werden. Ein konfliktfreier Zugriff findet dann statt, wenn die zur Zuordnung der Daten auf die Speicherbänke verwen dete Verteilungsfunktion gewährleistet, daß bei jedem zugelas senen Zugriff maximal nur so viele Daten aus einer Speicher bank benötigt werden, wie diese parallele Zugriffsports besitzt.The high memory tape required for parallel processors to provide wide, the during an access cycle clus of data required for parallel processing units if possible during a single storage cycle time be put. This can be achieved by using the Data appropriately on a number of memory banks be distributed. Conflict-free access then takes place if they are used to assign the data to the memory banks Dete distribution function ensures that everyone is allowed The maximum amount of data that can be accessed from a memory bank are needed, such as these parallel access ports owns.
Nach dem derzeitigen Stand der Technik sind bereits Spei cherarchitekturen bekannt, die für ein vorgegebenes Zugriffs schema einen konfliktfreien Zugriff auf zweidimensional an geordnete Daten erlauben, beispielsweise aus dem Buch von Gössel/Rebel/Creutzburg, "Speicherarchitektur und Parallel zugriff", Akademie-Verlag 1989, der Dissertation von Volkers, "Ein Beitrag zu Speicherarchitekturen programmierbarer Multi prozessoren der Bildverarbeitung", VDI-Verlag 1992, bzw. den Patentschriften DE 27 47 075, US 4,400,768 und US 4,051,551. Die dort jeweils beschriebenen Speicherarchitekturen benutzen je weils einen einzigen zweidimensionalen virtuellen Adreßraum zur Adressierung der Daten. Die Lokalisierung der auf jeweils eine Anzahl von Speicherbänken verteilten Daten geschieht über festgelegte Funktionen, die für jedes angesprochene Datum die zugehörige Speicherbank sowie die Adresse innerhalb dieser Bank ermitteln, die sogenannten Verteilungs- und Adreßfunktio nen. Dies wird durch eine den genannten Funktionen entspre chende arithmetische Logik erreicht, die aus den virtuellen Matrixadressen sowie ggf. Hilfsregistern die physikalischen Speicheradressen errechnet und die angesprochenen Speicher blöcke selektiert.According to the current state of the art, Spei Architecture known for a given access a conflict-free access to two-dimensional allow ordered data, for example from the book by Gössel / Rebel / Creutzburg, "Storage architecture and parallel access ", Akademie-Verlag 1989, the dissertation by Volkers, "A Contribution to Programmable Multi Memory Architectures processors of image processing ", VDI-Verlag 1992, or the Patents DE 27 47 075, US 4,400,768 and US 4,051,551. The memory architectures described there use each because a single two-dimensional virtual address space for addressing the data. The localization of each data distributed across a number of memory banks happens over specified functions, the for each addressed date associated memory bank and the address within it Bank determine the so-called distribution and address function nen. This will correspond to one of the functions mentioned arithmetic logic achieved from the virtual Matrix addresses and, if applicable, auxiliary registers the physical Memory addresses are calculated and the addressed memory blocks selected.
Die bisher bekannten Ansätze weisen jedoch den Nachteil auf, daß die Anzahl der Elemente des virtuellen Adreßraums die Anzahl der tatsächlich in den Speicherbänken vorhandenen Worte nicht überschreiten darf. Die Integration eines derartigen Speichers in eine als vorteilhaft angesehene hierarchische Speicherorganisationen, bei der ein großer Hauptspeicher mit relativ langsamem Zugriff durch einen kleinen Pufferspeicher mit kurzer Zugriffszeit, den man auch als Cache bezeichnet, ergänzt wird und die örtliche und zeitliche Lokalität des Datenzugriffs der Algorithmen ausgenutzt wird, ist bei den genannten Speicherarchitekturen nicht anwendbar. Dies ist da durch bedingt, daß anstelle von kurzen, auf die Größe des lokalen Speichers beschränkten Adressen nun Adreßworte ent sprechend der Größe des Hauptspeicheradreßraums verwendet wer den müssen. Dadurch wächst die Komplexität der verwendeten arithmetischen Logik überproportional an, gleichzeitig erhöhen sich auch die für die Adreßberechnung benötigten Zeiten stark, so daß eine Integration in das bei Mikroprozessoren übliche Piplineschema zu erheblichen Speicherlatenzzeiten führt. Des weiteren kann die bei Caches notwendige Hit-/Miss-Detektion, die bei bekannten Cachearchitekturen durch einen Vergleich der Zugriffsadresse mit dem in einem Tagregister abgelegten oberen Teil der Adresse des aus dem Hauptspeicher in den Cache gespiegelten Speicherblocks durchgeführt wird, nicht angewandt werden, da durch die Verteilung der Daten auf mehrere Bänke eine für herkömmliche Caches notwendige blockweise Organisa tion der Daten in linearer Folge im Cachespeicher nicht gege ben ist (siehe dazu das U.S. Buch von J. Hennessy/D. Patter son: "Computer Architecture, a Quantitative Approach", Morgan Kaufmann Publishers, 1990, pp. 402-497).However, the previously known approaches have the disadvantage that that the number of elements of the virtual address space the Number of words actually in the memory banks must not exceed. The integration of such Storage in a hierarchical considered advantageous Storage organizations using a large main storage relatively slow access through a small buffer memory with a short access time, also called a cache, is supplemented and the local and temporal locality of the Data access of the algorithms is used in the mentioned memory architectures not applicable. This is there due to the fact that instead of short, on the size of the local memory limited addresses now ent address words who uses the size of the main memory address space have to. This increases the complexity of the used disproportionate arithmetic logic, increase at the same time the times required for the address calculation so that an integration in the usual with microprocessors Pipeline scheme leads to significant memory latency. Of the hit / miss detection necessary for caches, that in known cache architectures by comparing the Access address with the upper one stored in a tag register Part of the address from the main memory to the cache mirrored blocks of memory is not applied because by distributing the data across multiple banks a block-by-block organisa for conventional caches tion of the data in linear sequence in the cache is not opposed ben (see also the U.S. book by J. Hennessy / D. Patter son: "Computer Architecture, a Quantitative Approach", Morgan Kaufmann Publishers, 1990, pp. 402-497).
Der Erfindung liegt die Aufgabe zugrunde, eine für die monoli thische Integration geeignete, aufwandsarme Cachespeicherar chitektur mit parallelem Zugriff zu entwickeln, die für N.M paralle, synchron arbeitende Verarbeitungseinheiten einerseits lesende und schreibende Zugriffe auf gemeinsame Datenstruktu ren in Form von Matrizen mit N × M Elementen sowie degene rierten Matrizen (Vektoren) mit N oder M Elementen und ein zelne Datenworte erlauben soll, wobei N und M eine beliebige Zweierpotenz darstellt. Adreßdistanzen in der Größe einer beliebigen Zweierpotenz in jeder Dimension zwischen den Ele menten sollen zulässig sein. Die zulässige Größe der Daten strukturen soll dabei die tatsächliche Größe des aus mehreren Speicherbänken bestehenden Cachespeichers übersteigen dürfen, bei einem Zugriff auf nicht im Cache befindliche Daten werden diese aus einem im Hintergrund befindlichen konventionellen Hauptspeicher nachgeladen.The invention has for its object one for the monoli thical integration suitable, low-effort cache memory develop parallel access architecture that is suitable for N.M parallel, synchronous processing units on the one hand Read and write access to shared data structure ren in the form of matrices with N × M elements and degenerate matrices (vectors) with N or M elements and a should allow individual data words, where N and M are any Represents power of two. Address distances the size of a any power of two in any dimension between the el ment should be allowed. The allowable size of the data The actual size of the structure should consist of several Memory banks may exceed existing cache memory, when accessing data that is not in the cache this from a conventional one in the background Main memory reloaded.
Bei dem erfindungsgemäßen Cachespeicher wird jeder zweidimen sionalen Datenstruktur, auf die eine Gruppe aus synchronisier ten Verarbeitungseinheiten zugreift, ein eigener, virtueller, zweidimensionaler Adreßraum zugewiesen, der im folgenden Ob jekt genannt wird. Der der Datenstruktur zugewiesene Adreßraum entspricht dieser in seinen Dimensionen, die verschiedenen Adreßräume werden durch eine fortlaufende Nummer unterschie den. Das Ansprechen von Daten innerhalb eines Objekts erfolgt ausschließlich mit lokalen virtuellen Adressen innerhalb des Objektadreßraums. Dies bietet eine Reihe wesentlicher Vortei le: Einerseits liegt die Größe üblicherweise zu bearbeitender Objekte weit unter der Größe üblicher Hauptspeicheradreßräume, daher kann die maximale Größe des zulässigen Objektadreßraumes entsprechend kleiner gehalten werden, was eine Verringerung des Aufwandes für die Adreßarithmetik sowie eine entsprechend höhere Verarbeitungsgeschwindigkeit der Adreßarithmetik be wirkt. Zweitens entfällt die zeitaufwendige Transformation der virtuellen Adressen auf physikalische Speicheradressen zwi schen Adressierung und Ansprechen des Wortes im Cache. Dies führt zu einer erheblichen Verringerung der Latenzzeit für einen derartigen Speicher. Die Transformation auf physikali sche Hauptspeicheradressen wird dagegen nur noch beim block weise durchgeführten Laden bzw. Schreiben des Cacheinhalts aus bzw. in den Hauptspeicher ausgeführt, wo diese weit weniger zeitkritisch ist.In the cache memory according to the invention, each is diminished sional data structure to which a group of synchronized accesses processing units, its own, virtual, assigned two-dimensional address space, which in the following Ob is called jekt. The address space assigned to the data structure corresponds to this in its dimensions, the different Address spaces are distinguished by a consecutive number the. Data is addressed within an object exclusively with local virtual addresses within the Object address space. This offers a number of essential advantages le: On the one hand, the size is usually to be processed Objects well below the size of common main memory address spaces, therefore, the maximum size of the allowable object address space be kept correspondingly smaller, which is a reduction the effort for the address arithmetic and a corresponding higher processing speed of the address arithmetic be works. Second, the time-consuming transformation of virtual addresses to physical memory addresses between addressing and addressing the word in the cache. This leads to a significant reduction in latency for such a memory. The transformation to physi Main memory addresses, on the other hand, are only stored in the block shows how the cache content was loaded or written or executed in the main memory, where this is far less is time critical.
Der Cachespeicher ist zudem für den Benutzer bzw. Compiler völlig transparent, d. h. das Anfordern von Daten aus dem Hauptspeicher bzw. das Zurückschreiben nicht mehr benötigter Daten geschieht automatisch. Die sehr aufwendige und compiler feindliche Verwaltung eines in der Größe limitierten lokalen Speichers mit parallelem Zugriff, die nach dem bisherigen Stand der Technik vom Benutzer selbst durchgeführt werden mußte, entfällt bei Anwendung der Erfindung völlig, wobei gleichzeitig der Hardwareaufwand für einen solchen Speicher ebenfalls geringer ist als bei den bisher bekannten Lösungen. Das Adressieren von Daten ausschließlich mit lokalen Positio nen innerhalb einer Datenstruktur anstatt mit einer Hauptspei cheradresse vereinfacht zudem die Programmierung wesentlich.The cache memory is also for the user or compiler completely transparent, d. H. requesting data from the Main memory or the write-back no longer required Data happens automatically. The very elaborate and compiler hostile management of a local limited in size Parallel access memory, according to the previous State of the art to be carried out by the user himself had to be omitted completely when using the invention, whereby at the same time, the hardware expenditure for such a memory is also lower than in the previously known solutions. Addressing data only with local position within a data structure instead of a main memory The address also simplifies programming considerably.
Die Einführung des Cacheprinzips für einen zweidimensionalen Adreßraums bietet zudem den Vorteil, daß die typisch in beiden Dimensionen unterschiedlich stark ausgeprägte zeitliche und örtliche Lokalität von Algorithmen der zweidimensionalen digi talen Signalverarbeitung von der erfindungsgemäßen Speicherar chitektur erheblich besser ausgenutzt wird als bei Caches nach dem bisherigen Stand der Technik, die nur einen linearen, eindimensionalen Adreßraum besitzen.The introduction of the cache principle for a two-dimensional Address space also has the advantage that the typical in both Dimensions with different degrees of time and local location of algorithms of the two-dimensional digi tal signal processing from the Speicherar invention architecture is used much better than with caches after the current state of the art, which is only a linear, have one-dimensional address space.
Nachfolgend wird die Erfindung anhand der Zeichnung erläutert. In der Zeichnung zeigen: The invention is explained below with reference to the drawing. The drawing shows:
Fig. 1 ein Blockschaltbild eines Parallelrechners mit synchronisierten Verarbeitungseinheiten, Fig. 1 is a block diagram of a parallel computer with synchronized processing units,
Fig. 2 ein Beispiel eines matrixförmigen Zugriffs auf ein Objekt, Fig. 2 shows an example of a matrix-like access to an object,
Fig. 3 die Verteilung der Daten eines Objekts auf eine Anzahl Speicherbänke und die Einführung von virtuellen Blöcken im Objektadreßraum, Fig. 3 shows the distribution of the data of an object to a number of memory banks and the introduction of virtual blocks in Objektadreßraum,
Fig. 4 die Anordnung der Daten innerhalb einer bei spielhaft ausgewählten Speicherbank, Fig. 4 shows the arrangement of the data within a selected memory bank in way of example,
Fig. 5 der Aufbau einer Adreßrechnereinheit zur Loka lisierung der Daten im Speicher, Fig. 5 shows the structure of a Adreßrechnereinheit to Loka capitalization of the data in the memory,
Fig. 6 der Aufbau eines Tags zur Lokalisierung von Daten im Speicher. Fig. 6, the structure of a tag for the location of data in memory.
Der Parallelrechner gemäß Fig. 1 umfaßt ein oder mehrere Gruppen von je N.M mit N,M = 1, 2, . . ., parallelen, mitein ander synchronisierte Verarbeitungseinheiten 10, die lesend und schreibend über einen Speicher-Crossbar 11 auf den Cache speicher 12 zugreifen können. Der Begriff Verarbeitungseinheit 10 umfaßt je eine arithmetische Logikeinheit zusammen mit ei nem Registerfile zur Zwischenspeicherung, einem Adreßrechner, der aber auch in die arithmetischen Logikeinheiten integriert sein kann und einer Hit/Miss-Erkennungslogik. Die Verarbei tungseinheiten 10 werden von einer oder mehreren Kontrollein heiten 15 angesteuert, die auch die Adressen für den paralle len Zugriff generiert. Der Cachespeicher 12 besteht aus R.Q einzelnen Speicherbänken 13, wobei sich R = N+1 und Q = M+1 ergibt, sowie einem I/O-Prozessor 14. Der I/O-Prozessor dient zum Transfer der Daten zwischen Cache und externem Hauptspei cher, er kann über einen Daten- und Adreßbus 16 auf den Haupt speicher 17 zugreifen.The parallel computer of FIG. 1 comprises one or more groups of NM with N, M = 1, 2,. . ., parallel, with each other synchronized processing units 10 , which can read and write via a memory crossbar 11 to access the cache memory 12 . The term processing unit 10 each includes an arithmetic logic unit together with a register file for temporary storage, an address computer, which can also be integrated into the arithmetic logic units, and hit / miss detection logic. The processing units 10 are controlled by one or more control units 15 , which also generate the addresses for the parallel access. The cache memory 12 consists of RQ individual memory banks 13 , where R = N + 1 and Q = M + 1, and an I / O processor 14 . The I / O processor serves to transfer the data between the cache and external main memory, it can access the main memory 17 via a data and address bus 16 .
Aus Sicht der Verarbeitungseinheiten stellt der Cachespeicher eine Vielzahl von zweidimensionalen virtuellen Adreßräumen zur Verfügung, die durch eine wahlfrei zu vergebenden Nummer, die Objektnummer, unterschieden werden. Fig. 2 zeigt ein Beispiel eines solchen virtuellen Adreßraums, auf den von N=2, M=2 Verarbeitungseinheiten zugegriffen wird. Daten 20 innerhalb des Adreßraums werden durch eine horizontale Adreßkomponente Ah 21 und eine vertikale Adreßkomponente Av 22 adressiert. Fig. 2 zeigt ebenfalls die auf den Adreßraum zulässigen Ma trixzugriffe für das Beispiel von 2.2 Verarbeitungseinheiten. Ein Matrixzugriff ist gekennzeichnet durch die horizontale und vertikale Adreßkomponente Ah,R und Av,R des Referenzelementes 23, das die linke obere Ecke der Matrix darstellt. Die Posi tion der übrigen Elemente ergibt sich durch die Elementdistan zen Dh und Dv in horizontaler und vertikaler Richtung. Die Distanzen Dh und Dv dürfen beliebige Potenzen von 2 annehmen. Wird eine beziehungsweise beide Distanzen zu 0 gewählt, so entartet die Matrix in einen Vektor oder Skalar, wobei das gleiche Datum entsprechend Fig. 2 dann mehreren Verarbeitungs einheiten zugeordnet wird.From the point of view of the processing units, the cache memory provides a large number of two-dimensional virtual address spaces, which are distinguished by an optional number, the object number. Fig. 2 shows an example of such a virtual address space, to the N = 2, M = 2 processing units accessed. Data 20 within the address space are addressed by a horizontal address component A h 21 and a vertical address component A v 22 . Fig. 2 also shows the allowed Ma trix accesses to the address space for the example of 2.2 processing units. A matrix access is characterized by the horizontal and vertical address components A h, R and A v, R of the reference element 23 , which represents the top left corner of the matrix. The position of the other elements results from the element distances D h and D v in the horizontal and vertical directions. The distances D h and D v may assume any powers of 2. If one or both distances are chosen to be 0, the matrix degenerates into a vector or scalar, the same data being then assigned to several processing units in accordance with FIG. 2.
Fig. 3 zeigt die Verteilung der Daten eines Adreßraums auf die Speicherbänke des Cachespeichers für ein Beispiel mit 2.2 Ver arbeitungseinheiten. Entsprechend der gewählten Dimensionie rung sind 9 Speicherbänke notwendig. Die Ziffern 0-8 in Fig. 3 zeigen an, welcher Speicherbank das an der entsprechenden Stelle befindliche Datum physikalisch zugeordnet wird. Für andere N,M erfolgt die Verteilung entsprechend, so daß jedes R.-te Datum einer Zeile der gleichen Speicherbank zugeordnet wird und sich die Zeilen mit der Frequenz Q wiederholen. Fig. 3 shows the distribution of the data of an address space on the memory banks of the cache memory for an example with 2.2 processing units. Depending on the dimensioning selected, 9 memory banks are required. Numbers 0-8 in Fig. 3 indicate which memory bank the date located at the corresponding location is physically assigned. For other N, M, the distribution is made accordingly, so that every R.-th date is assigned to a line of the same memory bank and the lines repeat with the frequency Q.
Gemäß der Erfindung wird nun jeder virtuelle Adreßraum logisch in zweidimensionale virtuelle Blöcke unterteilt, die die kleinste gemeinsame Datenstruktur darstellen, die vom Cache verwaltet wird. Die Größe der Blöcke SVB,H in horizontaler Richtung und SVB,v in vertikaler Richtung ergibt sich zu SVB,h = R.2X und SVB,v = Q.2Y mit X, Y = 0, 1, 2 . . . beliebig wählbar. Fig. 3 zeigt die Unterteilung in derartige virtuelle Blöcke 30, hier als Beispiel wieder für 2.2 Verarbeitungsein heiten und mit SVB,h = SVB,v = 12.According to the invention, each virtual address space is now logically divided into two-dimensional virtual blocks, which represent the smallest common data structure that is managed by the cache. The size of the blocks S VB, H in the horizontal direction and S VB, v in the vertical direction results in S VB, h = R.2 X and S VB, v = Q.2 Y with X, Y = 0, 1, 2nd . . freely selectable. Fig. 3 shows the subdivision in such virtual blocks 30, here units as an example again for 2.2 Verarbeitungsein and S VB, VB h = S, v = 12.
Jeder der insgesamt R.Q Speicherbänke des Cachespeichers wird
nun in eine Anzahl von Sets (NMSet) logisch unterteilt. Dabei
sei NMSet = SVB,V div Q, wobei div als ganzzahlige Division
aufzufassen ist. Jedes Set wird wiederum in eine Anzahl Blöcke
zu mehreren Datenworten aufgeteilt, die im folgenden zur Un
terscheidung von den virtuellen Blöcken der Objekte als logi
sche Blöcke bezeichnet werden. Die Anzahl der logischen Blöcke
NMBlock ist beliebig wählbar, wobei zur Reduktion des Adreß
rechnungsaufwands NMBlock vorzugsweise zu einer Potenz von 2 zu
wählen ist. Zur Speicherung eines virtuellen Blocks wird pro
Bank in jedem Set ein logischer Block allokiert. Die Lokali
sierung eines jeden in der Zugriffsmatrix enthaltenen Daten
worts an der Stelle Ah, Av innerhalb des Objekts geschieht
dann wie folgt:
Each of the total RQ memory banks of the cache memory is now logically divided into a number of sets (N MSet ). Let N MSet = S VB, V div Q, where div is an integer division. Each set is in turn divided into a number of blocks for several data words, which are referred to as logical blocks to distinguish them from the virtual blocks of the objects. The number of logical blocks N MBlock can be selected as desired, with N MBlock preferably being chosen to a power of 2 to reduce the address calculation effort . A logical block is allocated to each bank in each set to store a virtual block. The localization of each data word contained in the access matrix at the location A h , A v within the object then takes place as follows:
Bankauswahl: Verteilungsfunktion
ABank = Ah mod R + R.(Av mod Q) (Gl. 1)
Bank selection: distribution function
A Bank = A h mod R + R. (A v mod Q) (Eq. 1)
Setauswahl: Setfunktion
AMset = (Av mod SVB,v) div Q
= (Av div Q) mod 2y (Gl. 2)
Set selection: set function
A Mset = (A v mod S VB, v ) div Q = (A v div Q) mod 2 y (Eq. 2)
Auswahl log. Block: Beliebiges Verfahren zur Cache-Blockallo
kation, z. B. least-recently-used, direct
mapped oder voll assoziativ, siehe dazu
z. B. das U.S. Buch von D. Hennessy und D.
Patterson: Computer Architecture - A Quan
titative Approach, Morgan-Kaufmann, 1990.
pp. 408-414
Selection log. Block: Any method for cache block allocation, e.g. B. least-recently-used, direct mapped or fully associative, see e.g. B. The U.S. book by D. Hennessy and D. Patterson: Computer Architecture - A Quantitative Approach, Morgan-Kaufmann, 1990. pp. 408-414
Offset-Adresse im logischen Block: Adressfunktion
APBlock = (Ah mod SVB,h) div R
= (Ah div R) mod 2X (Gl. 3).
Offset address in the logical block: address function
A PBlock = (A h mod S VB, h ) div R = (A h div R) mod 2 X (Eq. 3).
Fig. 4 zeigt die Anordnung der Daten eines beliebige ausge wählten Objekts mit der Nummer "3" am Beispiel der Speicher bank Nr. 0. Die Größe des virtuellen Blocks entspricht dabei dem in Fig. 3 gegebenen Beispiel (X, Y=2). Die übrigen Spei cherbänke sind entsprechend aufgebaut und enthalten die über die Verteilungsfunktion (Gl. 1) zugewiesenen restlichen Daten. Fig. 4 shows the arrangement of the data of any selected object with the number "3" using the example of memory bank No. 0. The size of the virtual block corresponds to the example given in Fig. 3 (X, Y = 2). The remaining memory banks are structured accordingly and contain the remaining data assigned via the distribution function (Eq. 1).
Bei der praktischen Realisierung des Adreßrechners wird die Tatsache ausgenutzt, daß entsprechend der Gleichungen Gl. 1 bis Gl. 3 lediglich eine Division und Modulobildung mit R erforderlich ist. Die Modulo-Operationen 2X und 2y in den ge nannten Gleichungen können ohne arithmetischen Aufwand durch direktes Abgreifen der untersten Bits der Zwischenergebnisses ermittelt werden. Fig. 5 zeigt die beispielhafte Realisierung eines Adreßrechners mit den Parametern N=M=2, R=Q=3, SVB,v = 12, SVB,h = 12 und NMSet = 4. Ein Adreßrechner entsprechend Fig. 5 ist pro Verarbeitungseinheit einmal erforderlich. Die durch die in Fig. 2 charakterisierten Adreßparameter der Ma trix werden dabei durch den Programmablauf gesteuert an alle Verarbeitungseinheiten übergeben, die anhand ihrer Position in der Matrix der Verarbeitungseinheiten mittels der Adreßberech nungseinheit nach Fig. 5 zunächst die Adresse Ah, Av des ihnen jeweils zugeordneten Datenwortes im virtuellen Adreßraum und daraus die Position des entsprechenden Datenwortes im Cache berechnen. Der Adreßrechner besteht lediglich aus zwei Drei- Operanden-Addierern, zwei Modulo- und zwei Divisionseinheiten mit der Breite der jeweils maximal für ein Objekt zulässigen Adreßwortbreite pro Komponente. Für eine andere Parametrie rung N, M, SVB,v, SVB,h ändern sich lediglich die Werte der Festwert-Modulo- bzw. Divisionseinheiten und die Abgriffe der Ergebnisbits entsprechend den Gleichungen 1-3.In the practical implementation of the address computer, the fact is used that, according to equations Eq. 1 to Eq. 3 only division and modulus formation with R is required. The modulo operations 2 X and 2 y in the equations mentioned can be determined without arithmetic effort by directly tapping the lowest bits of the intermediate result. FIG. 5 shows the exemplary implementation of an address computer with the parameters N = M = 2, R = Q = 3, S VB, v = 12, S VB, h = 12 and N MSet = 4. An address computer corresponding to FIG. 5 is required once per processing unit. The address parameters of the matrix, which are characterized in FIG. 2, are passed through the program flow to all processing units which, based on their position in the matrix of the processing units by means of the address calculation unit according to FIG. 5, first give the address A h , A v of them calculate the respectively assigned data word in the virtual address space and use it to calculate the position of the corresponding data word in the cache. The address computer only consists of two three-operand adders, two modulo and two division units with the width of the maximum address word width per component that is permissible for an object. For another parameterization N, M, S VB, v , S VB, h , only the values of the fixed value modulo or division units and the taps of the result bits change according to equations 1-3.
Die Hit-/Miss-Erkennung des Caches geschieht über ein Tag-Re
gister, das entsprechend Fig. 6 die Objektnummer sowie die
horizontale und vertikale virtuelle Blockadresse AVBT,h und
AVBT,v enthält. Diese sind definiert als
The hit / miss detection of the cache takes place via a tag register which, according to FIG. 6, contains the object number and the horizontal and vertical virtual block address A VBT, h and A VBT, v . These are defined as
Horizontale virtuelle Blockadresse:
AVBT,h = ABS,h div SVB,h (Gl. 4)
Horizontal virtual block address:
A VBT, h = A BS, h div S VB, h (Eq. 4)
Vertikale virtuelle Blockadresse:
AVBT,v = ABS,v div SVB,v (Gl. 5)
Vertical virtual block address:
A VBT, v = A BS, v div S VB, v (Eq. 5)
wobei ABS,h, ABS,v den Beginn des virtuellen Blockes, also die Adresskomponenten des Wortes mit der niedrigsten Adresse im virtuellen Block, im zweidimensionalen Objektadressraum dar stellen.where A BS, h , A BS, v represent the beginning of the virtual block, ie the address components of the word with the lowest address in the virtual block, in the two-dimensional object address space.
Entsprechend der Anzahl der logischen Blöcke NMBlock pro Set ist für die Cacheeinheit ein Tag-Registerfile mit NMBlock Tag- Registern notwendig. Das Tag-Registerfile kann dabei wahlweise einmal pro synchronisierter Gruppe von N.M Verarbeitungsein heiten vorhanden sein, wobei dann N.M gleichzeitige Zugriffe auf das Tag-Registerfile zur Hit-/Miss-Erkennung notwendig sind. Aufwandsgünstiger ist es, das Tag-Registerfile einmal pro Verarbeitungseinheit vorzusehen, wobei dann jeweils nur ein einziger zeitgleicher Zugriff notwendig ist. Der Inhalt der Tag-Registerfiles ist in diesem Fall bei allen Verarbei tungseinheiten identisch. Im Gegensatz zu herkömmlichen Caches wird das Tag-Registerfile in diesem Fall dann direkt in die Verarbeitungseinheiten integriert, anstatt den Cacheblöcken zugeordnet. Dadurch kann der Hit-Miss-Vergleich zeitgleich mit dem Transport der Adressen durch den Speicher-Crossbar vorge nommen werden, was die Latenzzeit des Caches deutlich redu ziert.Depending on the number of logical blocks N MBlock per set, a tag register file with N MBlock tag registers is required for the cache unit . The tag register file can optionally be present once per synchronized group of NM processing units, in which case NM simultaneous access to the tag register file is necessary for hit / miss detection. It is less expensive to provide the tag register file once per processing unit, in which case only a single, simultaneous access is then required. In this case, the content of the tag register files is identical for all processing units. In contrast to conventional caches, the tag register file is then integrated directly into the processing units instead of being assigned to the cache blocks. As a result, the hit-miss comparison can be carried out simultaneously with the transport of the addresses through the memory crossbar, which significantly reduces the cache latency.
Pro Zugriff auf den Cache wird je nach gewählter Blockauswahl- Strategie der Inhalt ein oder mehrerer Tags mit Zwischenergeb nissen aus der Adressberechnungsschaltung nach Fig. 5 vergli chen. Ein Hit ist gegeben, wenn die Objektnummern eines Tags und der lokalen Zugriffsadresse übereinstimmen sowie für die ses Tag gilt AVBT,h = AVB,h und AVBT,v = AVB,v mit AVB,h und AVB,h entsprechend Fig. 5.Depending on the selected block selection strategy, the content of one or more tags with intermediate results from the address calculation circuit according to FIG. 5 is compared per access to the cache. A hit is given if the object numbers of a tag and the local access address match and for this tag A VBT, h = A VB, h and A VBT, v = A VB, v with A VB, h and A VB, h corresponding to FIG. 5.
Im Falle eines Hits wird der Cache die Position des gesuchten Datenworts über die Adreßberechnungsschaltung entsprechend Fig. 5. ermittelt und von der betreffenden Position in der ausgewählten Cachebank gelesen beziehungsweise an diese ge schrieben. Im Falle eines Miss werden die miteinander synchro nisierten Verarbeitungseinheiten angehalten und der fehlende virtuelle Block über den I/O-Prozessor nachgeladen, das zuge hörige Tag-Register wird aktualisiert. Der I/O-Prozessor bein haltet eine Transformationstabelle, über die die Transforma tion der virtuellen Adressen des Blocks in den linearen Hauptspeicheradressraum erfolgt. Dazu können beispielsweise die aus dem U.S. Buch: Hwang, Advanced Computer Architecture, McGraw-Hill, 1993, S. 198-203 bekannten Techniken angewandt werden.In the event of a hit, the cache, the position of the data word sought is determined via the address calculation circuit in accordance with FIG. 5 and read from the position in question in the selected cache bank or written to it. In the event of a miss, the processing units synchronized with one another are stopped and the missing virtual block is reloaded via the I / O processor, and the associated tag register is updated. The I / O processor contains a transformation table which is used to transform the virtual addresses of the block into the linear main memory address space. For this purpose, for example, the techniques known from the US book: Hwang, Advanced Computer Architecture, McGraw-Hill, 1993, pp. 198-203 can be used.
Nach dem Stand der Technik werden beim Nachladen einer inter nen Cache-Speicherbank die aufeinanderfolgenden Datenwörter über einen entsprechend breiteren externen Datenbus parallel geladen und dann Wort für Wort sequentiell in die Speicherbank geschrieben. Aufgrund der Verteilung von im Hauptspeicher be nachbarten Datenworten auf mehrere Cachespeicherbänke und der gewählten Verteilungsfunktion ist bei Anwendung der beschrie benen Erfindung auch ein paralleles Einschreiben mehrerer ge meinsam geladener Datenworte in die unterschiedlichen Cache bänke möglich, was den Nachladevorgang deutlich verkürzt und somit zu einer Leistungssteigerung des Systems führt. Entspre chend können auch beim Zurückschreiben eines virtuellen Bloc kes mehrere im physikalischen Adreßraum aufeinanderfolgende Datenworte parallel aus den Cachebänken gelesen und parallel über den externen Datenbus in den Hauptspeicher geschrieben werden.According to the state of the art, an inter NEN cache memory the successive data words via a correspondingly wider external data bus in parallel loaded and then sequentially into the memory bank word for word written. Due to the distribution of be in the main memory neighboring data words on several cache banks and the selected distribution function is described when using the benen invention also a parallel enrollment of several ge data words loaded together in the different cache benches possible, which significantly shortens the reloading process and thus leads to an increase in system performance. Correspond can also when writing back a virtual block kes several consecutive in the physical address space Data words read in parallel from the cache banks and in parallel written to the main memory via the external data bus will.
Claims (4)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19643688A DE19643688C2 (en) | 1996-10-23 | 1996-10-23 | Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19643688A DE19643688C2 (en) | 1996-10-23 | 1996-10-23 | Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19643688A1 true DE19643688A1 (en) | 1998-05-07 |
DE19643688C2 DE19643688C2 (en) | 2001-01-25 |
Family
ID=7809527
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19643688A Expired - Fee Related DE19643688C2 (en) | 1996-10-23 | 1996-10-23 | Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE19643688C2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19835216B4 (en) * | 1998-08-05 | 2005-10-27 | Systemonic Ag | Processor and method for parallel data processing |
US8661200B2 (en) | 2010-02-05 | 2014-02-25 | Nokia Corporation | Channel controller for multi-channel cache |
US9892047B2 (en) | 2009-09-17 | 2018-02-13 | Provenance Asset Group Llc | Multi-channel cache memory |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4051551A (en) * | 1976-05-03 | 1977-09-27 | Burroughs Corporation | Multidimensional parallel access computer memory system |
US4090174A (en) * | 1976-11-01 | 1978-05-16 | International Business Machines Corporation | Method and apparatus for accessing horizontal sequences, vertical sequences and rectangular subarrays from an array stored in a modified word organized random access memory system |
US4400768A (en) * | 1980-06-04 | 1983-08-23 | Burroughs Corporation | Parallel access computer memory system employing a power-of-two memory modules |
-
1996
- 1996-10-23 DE DE19643688A patent/DE19643688C2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19835216B4 (en) * | 1998-08-05 | 2005-10-27 | Systemonic Ag | Processor and method for parallel data processing |
US9892047B2 (en) | 2009-09-17 | 2018-02-13 | Provenance Asset Group Llc | Multi-channel cache memory |
US8661200B2 (en) | 2010-02-05 | 2014-02-25 | Nokia Corporation | Channel controller for multi-channel cache |
Also Published As
Publication number | Publication date |
---|---|
DE19643688C2 (en) | 2001-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69722117T2 (en) | Uniform memory architecture with dynamic graphics memory allocation | |
DE69332663T2 (en) | Data processor with a cache memory | |
DE69834026T2 (en) | METHOD AND DEVICE FOR COMMAND REASSEMBLY AND RECOVERY OF DATA FOR THE ORIGINAL COMMAND SEQUENCE | |
DE2547488C2 (en) | Micro-programmed data processing system | |
DE2501853A1 (en) | PROCESSOR FOR A DATA PROCESSING SYSTEM | |
DE19807872A1 (en) | Method of managing configuration data in data flow processors | |
DE19526960A1 (en) | A translation cross-allocation buffer organization with variable page size mapping and victim cache | |
DE4134192A1 (en) | INTEGRATED CIRCUIT WITH PROCESSING IN THE MEMORY | |
DE102013114351A1 (en) | System and method for hardware scheduling conditional barriers and impatient barriers | |
DE69734551T2 (en) | Method and apparatus for generating parity blocks | |
EP1915694A1 (en) | Apparatus and method for storing data and/or instructions in a computer system having at least two processing units and at least one first memory or memory area for data and/or instructions | |
DE10219623A1 (en) | System and method for memory decision using multiple queues | |
DE2641722A1 (en) | HIERARCHICALLY ORDERED STORAGE SYSTEM FOR A DATA PROCESSING SYSTEM WITH VIRTUAL ADDRESSING | |
DE112020000748T5 (en) | ADDRESS GENERATION FOR HIGH PERFORMANCE PROCESSING OF VECTORS | |
DE102013018135A1 (en) | Address bit remapping scheme for reducing access resolution of DRAM accesses | |
DE69130626T2 (en) | Method for managing a cache memory device | |
DE102020133667A1 (en) | Technologies for performing column reads on clustered data in a DIMM architecture | |
DE60003426T2 (en) | STATUS BITS FOR CACHE MEMORY | |
DE3919802C2 (en) | Memory control system for a multiprocessor system | |
DE19643688C2 (en) | Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces | |
DE102007055138B4 (en) | System for accessing a single port multi-way cache | |
DE102013114508B4 (en) | Block-based signal processing | |
DE102009027567A1 (en) | Cache memory device | |
CH495584A (en) | Data processing system | |
DE112016007298T5 (en) | Information processing apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8122 | Nonbinding interest in granting licences declared | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: KUEHNE, HEIKO, 10119 BERLIN, DE Owner name: KNEIP, JOHANNES, DR.-ING, 01465 LIEGAU-AUGUSTUSBAD |
|
8381 | Inventor (new situation) |
Inventor name: INVENTOR IS APPLICANT |