DE19643688C2 - Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces - Google Patents

Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces

Info

Publication number
DE19643688C2
DE19643688C2 DE19643688A DE19643688A DE19643688C2 DE 19643688 C2 DE19643688 C2 DE 19643688C2 DE 19643688 A DE19643688 A DE 19643688A DE 19643688 A DE19643688 A DE 19643688A DE 19643688 C2 DE19643688 C2 DE 19643688C2
Authority
DE
Germany
Prior art keywords
data
memory
address
block
virtual
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.)
Expired - Fee Related
Application number
DE19643688A
Other languages
German (de)
Other versions
DE19643688A1 (en
Inventor
Johannes Kneip
Heiko Koehne
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kneip Johannes Dr-Ing 01465 Liegau-Augustusbad
KUEHNE, HEIKO, 10119 BERLIN, DE
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to DE19643688A priority Critical patent/DE19643688C2/en
Publication of DE19643688A1 publication Critical patent/DE19643688A1/en
Application granted granted Critical
Publication of DE19643688C2 publication Critical patent/DE19643688C2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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

Abstract

Cachespeichereinheit für Verwendung in Parallelprozessoren mit N Z M Verarbeitungseinheiten, der ausschließlich lokale, fest an zweidimensionale Datenstrukturen - Objekte genannt - gebundene Adressen verwendet. Jedes Objekt wird in virtuelle Blöcke der Größe S VB,h = (N + 1) Z 2 X in horizontaler Richtung und S VB,v = (M + 1) Z 2 Y in vertikaler Richtung unterteilt, wobei X und Y wählbar sind. Die Daten des Objekts werden so auf (N + 1) Z (M + 1) Speicherbänke verteilt, daß für jeden virtuellen Block genau ein physikalischer Block pro Set in jeder Speicherbank belegt wird. Jede Speicherbank besteht aus N MSet = S VB,v div (M + 1) logischen Sets, die sich wiederum aus einer frei wählbaren Anzahl physikalischer Blöcke der Größe S MBlock = S VB,h div (N + 1) zusammensetzen. Die Hit-/Misserkennung findet im virtuellen Objektadressraum statt, wobei die Tagregister die Objektnummer und die Startadresse des Blocks in jeder Dimension enthält. Die Tagregister werden in die Verarbeitungseinheiten selbst integriert. Beim blockweisen Transfer der Daten zwischen Cache und externem Hauptspeicher können aufgrund der speziellen Verteilung der Daten über die Bänke im Hauptspeicheradreßraum benachbarte Daten parallel in die Cache-Speicherbänke geschrieben werden bzw. aus diesen ausgelesen werden.Cache memory unit for use in parallel processors with N Z M processing units, which uses only local addresses that are bound to two-dimensional data structures - called objects. Each object is divided into virtual blocks of size S VB, h = (N + 1) Z 2 X in the horizontal direction and S VB, v = (M + 1) Z 2 Y in the vertical direction, X and Y being selectable. The data of the object are distributed to (N + 1) Z (M + 1) memory banks in such a way that exactly one physical block per set is occupied in each memory bank for each virtual block. Each memory bank consists of N MSet = S VB, v div (M + 1) logical sets, which in turn are composed of a freely selectable number of physical blocks of size S MBlock = S VB, h div (N + 1). The hit / miss detection takes place in the virtual object address space, the tag register containing the object number and the start address of the block in each dimension. The tag registers are integrated into the processing units themselves. When the data is transferred in blocks between the cache and the external main memory, due to the special distribution of the data over the banks in the main memory address space, adjacent data can be written in parallel to the cache memory banks or read from them.

Description

Die Erfindung betrifft ein Verfahren zur Steuerung einer Ca­ chespeichereinheit zur Verwendung in einem Parallelprozessor nach dem Oberbegriff des Anspruchs 1.The invention relates to a method for controlling a Ca Memory unit for use in a parallel processor according to the preamble of claim 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 2 x, 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, memory architectures are already known which permit conflict-free access to two-dimensionally arranged data for a given access scheme, for example from the book by Gössel / Rebel / Creutzburg, "Memory Architecture and Parallel Access", Akademie Verlag 1989 , the dissertation by Volkers, "A contribution to memory architectures of programmable multi-processors of image processing", VDI Verlag 1992 , and the patents DE 27 47 075, US 4,400,768 and US 4,051,551. The memory architectures described there each use a single two-dimensional virtual address space for addressing the data. The localization of the data distributed in each case on a number of memory banks takes place via defined functions which determine the associated memory bank and the address within this bank for each addressed date, the so-called distribution and address functions. This is achieved by arithmetic logic corresponding to the functions mentioned, which calculates the physical memory addresses from the virtual matrix addresses and, if appropriate, auxiliary registers, and selects the addressed memory blocks.

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 is (see 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 Verfahren wird jeder zweidimensiona­ len Datenstruktur, auf die eine Gruppe aus synchronisierten 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 method according to the invention, each becomes two-dimensional len 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 musste, 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 Addressieren 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 an example selected memory bank

Fig. 5 der Aufbau einer Adreßrechnereinheit zur Loka­ lisierung der Daten im Speicher Fig. 5 shows the structure of an address computer unit for locating the data in memory

Fig. 6 der Aufbau eines Tags zur Lokalisierung von Daten im Speicher Fig. 6, the structure of a tag for localization 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 N. M 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 R. Q 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 matrix accesses permitted for the address space for the example of FIG. 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 to the memory banks of the cache memory of an example 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 jedes Objekt logisch in zweidi­ mensionale virtuelle Blöcke (30) unterteilt, die die kleinste gemeinsame Datenstruktur darstellen, die vom Cache verwaltet wird. Diese Unterteilung entspricht der Blockunterteilung des gesamten linearen Adreßraums bei einem konventionellen Cache. Der Unterschied zu diesem besteht darin, daß die virtuellen Blöcke zwei Adreßdimensionen besitzen und nicht an den Haupt­ speicheradressraum, sondern an den lokalen, virtuellen Adreß­ raum jeder Datenstruktur gebunden sind. Ein virtueller Block stellt somit einen Ausschnitt aus dem Objektadressraum dar, der sich über zwei Dimensionen erstreckt. 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 Verarbeitungseinheiten und mit SVB,h = SVB,v = 12.According to the invention, each object is now logically divided into two-dimensional virtual blocks ( 30 ), which represent the smallest common data structure that is managed by the cache. This division corresponds to the block division of the entire linear address space in a conventional cache. The difference to this is that the virtual blocks have two address dimensions and are not bound to the main memory address space, but to the local, virtual address space of each data structure. A virtual block thus represents a section of the object address space that extends over two dimensions. 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, 2. , , freely selectable. FIG. 3 shows the division into virtual blocks 30 of this type , here again as an example for FIG. 2. 2 processing units and with S VB, h = S VB, v = 12.

Jeder der insgesamt R . Q Speicherbänke des Cachespeichers wird nun in eine Anzahl von Sets (NMSet), (40), logisch unterteilt. Dabei sei NMSet = SVB,V div Q, wobei div als ganzzahlige Divi­ sion aufzufassen ist. Jedes Set wird wiederum in eine Anzahl Blöcke (41) zu mehreren Datenworten aufgeteilt, die im folgen­ den zur Unterscheidung von den virtuellen Blöcken der Objekte als physikalische Blöcke bezeichnet werden. Die Anzahl der physikalischen 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 vir­ tuellen Blocks (30) wird pro Bank in jedem Set (40) ein physi­ kalischer Block (41) allokiert. Die Lokalisierung eines jeden in der Zugriffsmatrix enthaltenen Datenworts an der Stelle Ah, Av innerhalb des Objekts geschieht dann wie folgt:
Bankauswahl: Verteilungsfunktion
Each of the total R. Q memory banks of the cache memory are now logically divided into a number of sets (N MSet ), ( 40 ). Let N MSet = S VB, V div Q, where div is to be understood as an integer division. Each set is in turn divided into a number of blocks ( 41 ) to form several data words, which are referred to as physical blocks to distinguish them from the virtual blocks of the objects. The number of physical blocks N MBlock can be chosen as desired, with N MBlock preferably being chosen to a power of 2 to reduce the address calculation effort . To store a virtual block ( 30 ), a physical block ( 41 ) is allocated per bank in each set ( 40 ). The location of each data word contained in the access matrix at the location A h , A v within the object is then as follows:
Bank selection: distribution function

ABank = AhmodR + R . (AvmodQ) (Gl. 1)
A Bank = A h modR + R. (A v modQ) (Eq. 1)

Setauswahl: Setfunktion
Set selection: set function

AMSet = (AvmodSVB,v) div Q = (AvdivQ) mod 2Y (Gl. 2)
A MSet = (A v modS VB, v ) div Q = (A v divQ) mod 2 Y (Eq. 2)

Auswahl phys. Block: Beliebiges Verfahren zur Cache-Blocker­ setzung, 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
Offset-Adresse im physikalischen Block: Adressfunktion
Selection of physical block: Any method for cache blocker replacement, 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 address in the physical block: address function

APBlock = (AhmodSVB,h) div R = (AhdivR) mod 2X (Gl. 3)A PBlock = (A h modS VB, h ) div R = (A h divR) 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 2 X und 2 Y in den ge­ nannten Gleichungen können ohne arithmetischen Aufwand durch direktes Abgreifen der untersten Bits der Zwischenergebnisse 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 zu lässigen Adreßwortbreite pro Komponente. Für eine anderere 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 ge equations can be determined without arithmetic effort by directly tapping the lowest bits of the intermediate results. 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, initially 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 consists only 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 a different 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
Horizontale virtuelle Blockadresse:
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
Horizontal virtual block address:

AVBT,h = ABS,h div SvB,h (Gl. 4)
A VBT, h = A BS, h div S vB, h (Eq. 4)

Vertikale virtuelle Blockadresse:
Vertical virtual block address:

AVBT,v = ABS,v div SvB,v (Gl. 5)
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 physikalischen Blöcke NMBlock pro Set ist für die Cacheeinheit ein Tag-Registerfile mit NMBlock Tag-Registern notwendig. Das Tag-Registerfile kann dabei wahl­ weise einmal pro synchronisierter Gruppe von N . M Verarbei­ tungseinheiten vorhanden sein, wobei dann N . M gleichzeitige Zugriffe auf das Tag-Registerfile zur Hit-/Miss-Erkennung not­ wendig sind. Aufwandsgünstiger ist es, das Tag-Registerfile einmal pro Verarbeitungseinheit vorzusehen, wobei dann jeweils nur ein einziger zeitgleicher Zugriff notwendig ist. Der In­ halt der Tag-Registerfiles ist in diesem Fall bei allen Verar­ beitungseinheiten identisch. Im Gegensatz zu herkömmlichen Ca­ ches wird das Tag-Registerfile in diesem Fall dann direkt in die Verarbeitungseinheiten integriert, anstatt den Cacheblöc­ ken zugeordnet. Dadurch kann der Hit-Miss-Vergleich zeitgleich mit dem Transport der Adressen durch den Speicher-Crossbar vorgenommen werden, was die Latenzzeit des Caches deutlich reduziert. Depending on the number of physical 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 be selected once per synchronized group of N. M processing units are present, in which case N. M simultaneous access to the tag register file for hit / miss detection is necessary. 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 latency of the cache.

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 searched data word is determined via the address calculation circuit according to 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 which are 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 become.

Claims (4)

1. Verfahren zur Steuerung einer Cachespeichereinheit für die Verwendung in einem Parallelprozessor, der mindestens eine Gruppe mit N . M synchronisierten parallelen Verarbeitungsein­ heiten (10) enthält, mit N und M als beliebige Potenz von 2, bestehend aus R . Q, mit R = N + 1, Q = M + 1, einzelnen Speicherbänken (13) mit je einer Vielzahl von adressierbaren Wortspeicher­ plätzen, die über einen Speichercrossbar (11) an die N . M Ver­ arbeitungseinheiten angebunden sind sowie einem I/O-Prozessor (14), der Daten aus einem externen Hauptspeicher in die Ca­ chespeichereinheit laden oder aus dieser zurückschreiben kann, mit der Eigenschaft, daß die Adressierung der Daten in den Verarbeitungseinheiten über virtuelle, an jeweils eine Daten­ struktur gebundene und einer Gruppe aus N . M Verarbeitungsein­ heiten zugeordnete zweidimensionale Adreßräume, die jeweils diese Datenstruktur enthalten und Objekte darstellen, die durch jeweils eine laufende Nummer unterschieden werden, er­ folgt und ein regulärer Zugriff der Verarbeitungseinheiten in Form einer Matrix auf das Objekt ermöglicht wird, wobei Adreß­ distanzen zwischen den einzelnen Elementen der Größe einer beliebigen Zweierpotenz in jeder Dimension zulässig sind, und die in den Adreßräumen enthaltenen Daten durch eine Funktion der Form Ah mod R + R . (Av mod Q) auf die Speicherbänke verteilt sind, wobei Ah die horizontale und Av die vertikale Adresskomponente der einzelnen Datenworte im Objektadreßraum darstellt, dadurch gekennzeichnet, daß jedes Objekt in vir­ tuelle Blöcke (30) der Größe SVB,h = R . 2X in horizontaler Richtung und SVB,v = Q . 2Y in vertikaler Richtung unterteilt wird, wobei X und Y zu 0, 1, 2, 3 . . . beliebig gewählt werden können, sowie die R . Q Speicherbänke des Cachespeichers jeweils in eine Anzahl Sets (40) NMSet = SVB,v div Q, mit div als ganzzahlige Divisionsoperation, aufgeteilt werden, die wieder­ um aus einer beliebigen Anzahl physikalischer Blöcke (41) der Größe SMBlock = SVB,h div R bestehen, und denen die Daten jedes virtuellen Blocks so zugeordnet werden, daß für jeden virtuel­ len Block (30) genau ein physikalischer Block (41) pro Set (40) in jeder Speicherbank belegt wird und sich jedes Daten­ wort eines Matrixzugriffs auf ein Objekt im Set mit der Nummer AMSet = (Av div Q) mod 2Y und innerhalb des physikalischen Blocks (41) an der relativen Adresse APBlock = (Ah div R) mod 2X befindet, wobei die Auswahl des Blocks innerhalb des Sets durch eine von der Blockanfangsadresse oder Blocknutzungshäu­ figkeit abhängige Blockersetzungsstrategie erfolgt.1. Method for controlling a cache memory unit for use in a parallel processor that has at least one group with N. M contains synchronized parallel processing units ( 10 ), with N and M as any power of 2, consisting of R. Q, with R = N + 1, Q = M + 1, individual memory banks ( 13 ), each with a large number of addressable word memories, which can be sent to the N via a memory crossbar ( 11 ). M processing units are connected and an I / O processor ( 14 ), which can load data from an external main memory into the cache memory unit or write it back, with the property that the addressing of the data in the processing units via virtual, at each a data structure bound and a group of N. M processing units are assigned two-dimensional address spaces, each containing this data structure and representing objects that are distinguished by a sequential number, followed and regular access of the processing units in the form of a matrix to the object is made possible, with address distances between the individual elements the size of any power of two in any dimension, and the data contained in the address spaces by a function of the form A h mod R + R. (A v mod Q) are distributed over the memory banks, with A h representing the horizontal and A v the vertical address component of the individual data words in the object address space, characterized in that each object is divided into virtual blocks ( 30 ) of size S VB, h = R. 2 X in the horizontal direction and S VB, v = Q. 2 Y is divided in the vertical direction, with X and Y being 0, 1, 2, 3. , , can be chosen arbitrarily, as well as the R. Q memory banks of the cache memory are each divided into a number of sets ( 40 ) N MSet = S VB, v div Q, with div as an integer division operation, which again consists of any number of physical blocks ( 41 ) of size S MBlock = S VB , h div R exist, and the data of each virtual block are assigned so that for each virtual block ( 30 ) exactly one physical block ( 41 ) per set ( 40 ) is occupied in each memory bank and each data word of a matrix access to an object in a set with the number a mset = (a v div Q) mod 2 Y and is within the physical block (41) to the relative address a pblock = (a h div R) mod 2 X, wherein the selection of Blocks within the set by a block replacement strategy depending on the block start address or block usage frequency. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß je­ des Tagregister des Caches die Nummer des Objekts, die hori­ zontale Blockadresse AVBT,h = ABS,h div SvB,h und die vertikale Blockadresse AVBT,v = ABS,v div SvB,v enthält, wobei ABS,h, ABS,v den Beginn des virtuellen Blockes, also die Adresskomponenten desjenigen Datenwortes, das im Block enthalten ist und die kleinsten Adresskomponenten Ah, Av aller im virtuellen Block enthaltenen Datenworte besitzt, darstellt.2. The method according to claim 1, characterized in that depending on the tag register of the cache, the number of the object, the horizontal block address A VBT, h = A BS, h div S vB, h and the vertical block address A VBT, v = A BS , v div S vB, v contains, where A BS, h , A BS, v the beginning of the virtual block, ie the address components of the data word contained in the block and the smallest address components A h , A v all contained in the virtual block Owns data words. 3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Tagregister nicht den Cachebänken (13) zugeordnet sind, sondern in den Verarbeitungseinheiten (10) integriert sind, wobei die Anzahl der Tagregister der Anzahl der physika­ lischen Blöcke (41) pro Set (40) entspricht.3. The method according to claim 1 or 2, characterized in that the day registers are not assigned to the cache banks ( 13 ) but are integrated in the processing units ( 10 ), the number of day registers being the number of physical blocks ( 41 ) per set ( 40 ) corresponds. 4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Verteilung der Daten auf R . Q Speicherbänke zum parallelen Le­ sen und Schreiben der Daten aus beziehungsweise in die Caches­ peicherblöcke von im Hauptspeicheradreßraum auf benachbarten Adressen liegenden Datenworten während des blockweisen Trans­ fers von Daten zwischen Hauptspeicher und Cache ausgenutzt wird.4. The method according to claim 1, characterized in that the Distribution of data on R. Q memory banks for parallel Le Sending and writing the data from or into the caches memory blocks from in the main memory address space to neighboring ones Addressed data words during the block-wise trans He used data between main memory and cache becomes.
DE19643688A 1996-10-23 1996-10-23 Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces Expired - Fee Related DE19643688C2 (en)

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 DE19643688A1 (en) 1998-05-07
DE19643688C2 true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4051551A (en) * 1976-05-03 1977-09-27 Burroughs Corporation Multidimensional parallel access computer memory system
DE2747075A1 (en) * 1976-11-01 1978-05-24 Ibm IMAGE STORAGE AND PROCESSING
US4400768A (en) * 1980-06-04 1983-08-23 Burroughs Corporation Parallel access computer memory system employing a power-of-two memory modules

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4051551A (en) * 1976-05-03 1977-09-27 Burroughs Corporation Multidimensional parallel access computer memory system
DE2747075A1 (en) * 1976-11-01 1978-05-24 Ibm IMAGE STORAGE AND PROCESSING
US4400768A (en) * 1980-06-04 1983-08-23 Burroughs Corporation Parallel access computer memory system employing a power-of-two memory modules

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Dissertation v. K. Rönner: Eine für Bildverarbei- tungsverfahren optimierte hochparallele RISC- Architektur, VDI-Verlag 1995, S. 15-18 *
Dissertation v. Volkers: Ein Beitrag zu Speicher- architekturen programmierbarer Multiprozessoren der Bildverarbeitung, VDI-Verlag 1992 *
Gössel/Rebel/Creutzburg: Speicherarchitektur und Parallelzugriff, Akademie-Verlag 1989 *
J. Hennessy/D. Patterson: Computer Architecture- A quantitative Approach,Morgan Kaufmann PublishersS. 402-497 *

Also Published As

Publication number Publication date
DE19643688A1 (en) 1998-05-07

Similar Documents

Publication Publication Date Title
DE69722117T2 (en) Uniform memory architecture with dynamic graphics memory allocation
DE3011552C2 (en)
DE10353268B3 (en) Parallel multi-thread processor with divided contexts has thread control unit that generates multiplexed control signals for switching standard processor body units to context memories to minimize multi-thread processor blocking probability
DE102012221504B4 (en) Multilevel-Instruction-Cache-Pre-Fetch
DE2547488C2 (en) Micro-programmed data processing system
DE10232926B4 (en) A method of maintaining coherency in a hierarchical cache arrangement of a computer system
DE2617408B2 (en) Memory module for a data processing device with a memory hierarchy
DE2310631C3 (en) Storage hierarchy for a data processing system
DE19526960A1 (en) A translation cross-allocation buffer organization with variable page size mapping and victim cache
DE102013114351A1 (en) System and method for hardware scheduling conditional barriers and impatient barriers
EP1118941B1 (en) Microprocessor system and arrangement in order to operate a microprocessor system
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
DE69734551T2 (en) Method and apparatus for generating parity blocks
DE60204676T2 (en) Method and apparatus for supporting multiple cache line invalidations per cycle
DE102021108478B4 (en) Device and control for cache directory CAM error detection and correction
DE3919802A1 (en) Memory component with vector processors and a scalar processor
DE19643688C2 (en) Method for controlling a cache memory unit with conflict-free parallel access to virtual, 2-dimensional address spaces
DE4114053A1 (en) COMPUTER SYSTEM WITH CACHE MEMORY
DE102007055138B4 (en) System for accessing a single port multi-way cache
DE102013114508B4 (en) Block-based signal processing
EP0012207B1 (en) Memory hierarchy using a charge coupled memory device
DE102009027567A1 (en) Cache memory device
DE112016007298T5 (en) Information processing apparatus
DE2750126A1 (en) DATA PROCESSING SYSTEM WITH AN INTERMEDIATE BUFFER
EP1915684A1 (en) Device and method for storing data and/or commands in a computer system having at least two execution units and at least one first memory or memory area for data and/or commands

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