DE19643688A1 - Cache memory with conflict free parallel access - Google Patents

Cache memory with conflict free parallel access

Info

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
Application number
DE19643688A
Other languages
German (de)
Other versions
DE19643688C2 (en
Inventor
Johannes Dipl Ing 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

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

The cache memory is used in a parallel processing system having a group of N x M processing modules (10), arithmetic logic unit and register file for intermediate storage and address processor and hit/miss recognition logic, which access the cache memory (12) via a memory cross coupling (11). The memory has a number of cell banks (13) R x Q , where R=N+1 and Q=M+1 and each have a number of addressable word memory locations. An input output processor (14) transfers data to and from an external memory. The cache memory provides two-dimensional virtual memory space. Each virtual address space is divided in virtual blocks, representing the smallest common data structure capable of being managed by the cache. Each cell bank is logically segmented into a number of sets and each set is split into several blocks, logical blocks, of data words. To store a virtual block per bank, a logical block is allocated.

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)

1. Cachespeichereinheit für die Verwendung in einem Parallel­ prozessor, der mindestens eine Gruppe mit N.M synchronisierten parallelen Verarbeitungseinheiten 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 mit je einer Vielzahl von adressier­ baren Wortspeicherplätzen, die über einen Speichercrossbar an die N.M Verarbeitungseinheiten angebunden sind sowie einem I/O-Prozessor, der Daten aus einem externen Hauptspeicher in die Cachespeichereinheit laden oder aus dieser zurückschreiben kann, mit der Eigenschaft, daß die Adressierung der Daten in den Verarbeitungseinheiten über virtuelle, an jeweils eine Datenstruktur gebundene und einer Gruppe aus N.M Verarbei­ tungseinheiten zugeordneten zweidimensionalen Adreßräumen, die im folgenden Objekte genannt werden und durch jeweils eine laufende Nummer unterschieden werden, erfolgt 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 Zweierpo­ tenz 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 ein­ zelnen Datenworte im Objektadreßraum darstellt, dadurch ge­ kennzeichnet, daß jedes Objekt in virtuelle Blöcke 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 Spei­ cherbänke des Cachespeichers in eine Anzahl Sets NMSet = SVB,v div Q, mit div als ganzzahlige Divisionsoperation, unterteilt werden, die wiederum aus einer beliebigen Anzahl logischer Blöcke der Größe SMBlock = SVB,h div R bestehen, und denen die Daten jedes virtuellen Blocks so zugeordnet werden, daß für jeden virtuellen Block genau ein physikalischer Block pro Set in jeder Speicherbank belegt wird und sich jedes Da­ tenwort eines Matrixzugriffs auf ein Objekt im Set mit der Nummer AMSet = (Av div Q) mod 2y und innerhalb des physikali­ schen Blocks an der relativen Adresse APBlock = (Ah div R) mod 2X befindet, wobei die Auswahl des Blocks innerhalb des Sets beliebig, aber eindeutig durchzuführen ist.1. cache memory unit for use in a parallel processor containing at least one group of NM synchronized parallel processing units, with N and M as any power of 2, consisting of RQ, with R = N + 1, Q = M + 1, individual Memory banks each with a large number of addressable word storage locations which are connected to the NM processing units via a memory crossbar and an I / O processor which can load data from an external main memory into the cache memory unit or write it back from it, with the property that the Addressing of the data in the processing units via virtual two-dimensional address spaces that are bound to a data structure and assigned to a group of NM processing units, which are referred to below as objects and are distinguished by a serial number, and regular access of the processing units takes place in the form a matrix on the object icht is not, whereby address distances between the individual elements of the size of an arbitrary power of two in each dimension are permitted, and the data contained in the address spaces by a function of the form A h mod R + R. (A v mod Q) on the memory banks are distributed, with A h 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 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, and the RQ memory banks of the cache memory can be divided into a number of sets N MSet = S VB, v div Q, with div as an integer division operation, which in turn consists of any number of logical blocks of size S MBlock = S VB , h div R exist, and the data of each virtual block are assigned so that exactly one physical block per set is occupied in each memory bank for each virtual block and each data word of a matrix access to an object in the set with the number A MSet = (A v div Q) mod 2 y and within the physical block at the relative address A PBlock = (A h div R) mod 2 X , the selection of the block within the set being arbitrary but unambiguous. 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. Cachespeichereinheit nach Anspruch 1 oder 2, dadurch ge­ kennzeichnet, daß die Tagregister nicht den Cachebänken zuge­ ordnet sind, sondern in den Verarbeitungseinheiten integriert sind, wobei die Anzahl der Tagregister der Anzahl der logi­ schen Blöcke pro Set entspricht.3. cache memory unit according to claim 1 or 2, characterized ge indicates that the day registers are not added to the cache banks are classified, but integrated in the processing units are, the number of day registers the number of logi blocks per set. 4. Cachespeichereinheit nach Anspruch 1, dadurch gekennzeich­ net, daß die Verteilung der Daten auf R.Q Speicherbänke zum parallelen Lesen und Schreiben der Daten aus beziehungsweise in die Cachespeicherblöcke von im Hauptspeicheradreßraum auf benachbarten Adressen liegenden Datenworten während des block­ weisen Transfers von Daten zwischen Hauptspeicher und Cache ausgenutzt wird.4. cache memory unit according to claim 1, characterized net that the distribution of data on R.Q memory banks for parallel reading and writing of data from or into the cache blocks from in the main memory address space data addresses lying adjacent during the block assign transfers of data between main memory and cache is exploited.
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 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)

* 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
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)

* 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
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

Cited By (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

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