WO2018046850A1 - Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue - Google Patents

Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue Download PDF

Info

Publication number
WO2018046850A1
WO2018046850A1 PCT/FR2017/052368 FR2017052368W WO2018046850A1 WO 2018046850 A1 WO2018046850 A1 WO 2018046850A1 FR 2017052368 W FR2017052368 W FR 2017052368W WO 2018046850 A1 WO2018046850 A1 WO 2018046850A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
cache
address
addresses
circuit
Prior art date
Application number
PCT/FR2017/052368
Other languages
English (en)
Inventor
Jean-François ROY
Fabrice Devaux
Original Assignee
Upmem
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 Upmem filed Critical Upmem
Priority to JP2019513044A priority Critical patent/JP2019531546A/ja
Priority to US16/331,429 priority patent/US11494308B2/en
Priority to CN201780062063.1A priority patent/CN109952567B/zh
Priority to KR1020197009869A priority patent/KR102398616B1/ko
Publication of WO2018046850A1 publication Critical patent/WO2018046850A1/fr

Links

Classifications

    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Definitions

  • the present application relates to a computing system comprising a processor, a memory, and a control interface between the processor and the memory.
  • a processor PIM Processor In Memory
  • PIM Processor In Memory
  • a PIM processor is controlled by a main processor, typically an Intel, ARM or Power processor. In this document this processor is called HCPU (Host CPU).
  • the PIM processor and the HCPU have access to the memory in which the PIM processor is integrated.
  • this memory is called PIM memory.
  • Each PIM processor has registers that allow the HCPU to control it. These registers, accessible by the HCPU, are visible in the physical address space of the PIM circuit. In this document these registers are called interface registers, the set of interface registers of a PIM processor being called the interface of this PIM processor, and the software, running on the HCPU, controlling this interface being called the interface software.
  • the HCPU typically performs the following actions to use a PIM processor:
  • the writes generated by the HCPU having as destination either the interface of a PIM processor or the PIM memory, must be carried out without delay.
  • a HCPU has a cache system and it can delay writing in the PIM circuit indefinitely.
  • HCPUs processors have cache management instructions to force the main memory update, a data specified by its address, whose writing has so far only occurred in the cache of the processor .
  • cache affected by the cache management instructions is named in this document "CPU cache", the cache not affected by these instructions being named “DRAM cache”.
  • Delayed writes are also a problem for non-volatile memories that do not integrate a PIM processor.
  • MRAM memories magnetic memory
  • EVERSPIN magnetic memory
  • DRAM-compatible interface for use with a DRAM controller.
  • Another problem is that if a data item Cl to be written to a certain address is stored in the DRAM cache, this data can be replaced by the arrival of a new data C2 for the same address, the DRAM cache considering optimal not to write Cl in the memory circuit, C1 being supplanted by C2.
  • the HCPUs processors have cache management instructions, in particular to invalidate in the cache a data item specified by its address.
  • the value VI is no longer present in the cache, and if the HCPU reroutes a data item to the AV address, it will obtain the value V2 of the memory circuit and the cache will now hide this value V2.
  • an invalidation instruction targeting the AV address ensures that the VI value is no longer present in the CPU cache, but does not guarantee that the VI value is not always present in the DRAM cache.
  • the DRAM controller will just return the VI value from its DRAM cache.
  • an embodiment provides a computing system comprising: a computing device having one or more processing cores under instruction command and a memory controller, the memory controller including a cache memory; and a memory circuit coupled to the memory controller via a data bus and an address bus, the memory circuit being adapted to have a first memory location of m bits accessible by a plurality of first addresses provided on the address bus, the computing device being configured to select, for each memory operation accessing the first memory location of m bits, one of the plurality of first addresses.
  • the first memory location of m bits is accessible by a plurality P of first addresses, the computing device being configured to use a first of the addresses to access the first memory location during an Nth and a (N + P ) first access operations to the first memory location.
  • each address of the plurality of first addresses comprises a first value of n bits and a second value of p bits
  • the computing device being configured to perform a write data write operation to the m bits of the first memory location by performing a read operation of the first memory location using one of the first addresses having a first n-bit value selected and a second p-bit value generated according to the write data.
  • the memory circuit is adapted, in response to receiving a read operation to the first memory location using one of the first addresses, to write the second p-bit value of the address in the first memory location.
  • p and m are positive integers and m is equal to or greater than p.
  • the memory circuit is adapted to have a second memory location accessible by a plurality of second addresses provided on the address bus.
  • the first and second memory locations are part of a first range of memory locations of the memory circuit, the first range of memory locations being selected by a sliding address window, wherein the memory locations of the first range of memory locations are addressable:
  • the memory circuit comprising an address conversion circuit adapted to convert addresses in the first and second address ranges to corresponding addresses in the sliding address window.
  • the address conversion circuit comprises at least one programmable register for defining the location of the sliding address window.
  • said at least one register of the address conversion circuit is programmable to define the location and the size of the sliding address window.
  • the memory controller is adapted to perform a cache evacuation operation, the cache evacuation operation comprising one or more memory access instruction sequences performed by the memory controller resulting in that :
  • all or part of the read data stored in the memory controller cache memory is evacuated from the cache memory, the read data including data read from the memory circuit prior to the cache evacuation operation; or all or part of the cache write transactions stored in the memory controller cache is written to the memory circuit and all or part of the read data stored in the memory controller cache memory is evacuated from the cache memory.
  • the memory circuit further comprises an auxiliary processor
  • the memory access instruction sequence comprises only register access instructions to access one or more control registers of the memory circuit to control the memory access.
  • the memory circuit comprises a monitoring circuit, accessible by the computing device, and adapted to record memory access transactions made in the memory circuit, the computing device being configured to generate said one or more memory access instruction sequences based on the transactions recorded by the monitoring circuit.
  • the memory circuit further comprises an auxiliary processor, the first and second memory locations being control registers of the auxiliary processor.
  • the computing device is configured to generate commands of a first type and commands of a second type, the memory circuit being adapted to modify the order of commands received from the computing device in such a way that for a first group of commands of the second type generated by the computing device between first and second commands of the first type, the order of the first and second commands of the first type relative to the command group of the second type is respected.
  • the memory circuit is adapted to modify the order of the commands on the basis of an order value associated with at least each order of the first type, the order value of each command being included:
  • the computing device further comprises a CPU cache memory configurable by cache management instructions, the memory cache of the memory controller not being configurable by cache management instructions.
  • the memory circuit comprises a non-volatile memory array.
  • Another embodiment provides a method of accessing a memory circuit coupled to a memory controller of a computing device via a data bus and an address bus, the computing device having one or more processing cores and the memory controller comprising a cache memory, the method comprising: selecting, by the computing device, for each memory operation accessing a first memory location of m bits of the memory circuit, an address among a plurality first addresses, the first memory location of m bits being accessible by each of the plurality of first addresses provided on the address bus.
  • a system consisting of a main circuit and at least one memory circuit; the main circuit comprising at least one main processor and a memory controller connected to the memory circuit; the memory controller comprising a cache that is not affected by the cache management instructions of the main processor; the memory circuit integrating at least one auxiliary processor; this auxiliary processor comprising an interface accessible to the main processor; this interface comprising registers, each register of this interface being accessible by the main processor through a plurality of addresses; the interface being controlled by software running on the main processor, the software choosing for each access to a given register of the interface, one of the plurality of addresses corresponding to this register.
  • the choice of the address to access a register of the given interface is done in such a way that an address, used during the N th access to this register, will be used during the (N + P) th access to this register, where P is the number of addresses composing the plurality of addresses associated with this register.
  • the access address to at least one interface register is constructed by assembling a first n-bit field named major field, with a second field of p-bit, called field minor, where the value of the major field is selected from a plurality of values, and the value of the minor field can have any value between 0 and ( 2A P) -1, reading the interface register to the address ⁇ major field, minor field ⁇ causing the writing thereof by the minor field value, the software using such readings to write values in the interface register.
  • the possible values of the minor field are restricted to the values that can be written in the interface register.
  • the advantage of using, during a read operation, a field of the address for transmitting bits to be written in the memory is that the read operation is not likely to be put on hold in the cache, as could be a write operation.
  • registers of the interface make it possible to configure the position and, where appropriate, the size, of an additional access window on an area of the memory of the memory circuit, this access window being accessible to through a plurality of address ranges, and where the interface software realizes access to the memory of the memory circuit by positioning this access window on the memory area concerned, and chooses the access addresses in the plurality of ranges. addresses to access this access window.
  • the interface software chooses the addresses to access the access window in such a way that if the address of the N th access to the access window is chosen from a given address range, then the (N + P) i th access address will be chosen in this same address range, where P is the number of address ranges composing the plurality of address ranges. .
  • the software controlling the interface uses an access sequence, chosen from among a set of predetermined access sequences, to expel from the cache of the memory controller the write transactions transmitted before this sequence, thus forcing the actual realization of these write transactions, the determination of the predetermined access sequences being made from the known characteristics or deduced from the observation of the memory controller cache.
  • the software controlling the interface uses an access sequence, chosen from a set of predetermined access sequences, to expel from the memory controller cache the data read before this sequence, the determination of the predetermined sequences. based on the known characteristics or deduced from the observation, the memory controller cache.
  • the software controlling the interface uses an access sequence, chosen from a set of predetermined access sequences, to expel from the memory controller cache the write transactions and the data read before this sequence. , the determination of the predetermined sequences being based on the known characteristics or deduced from the observation, the memory controller cache.
  • the access sequence is reduced, so that it ensures the eviction of the memory controller cache only write transactions or data read, corresponding to a subset of the associated physical addresses to the memory circuit.
  • the predetermined access sequences only comprise accesses to registers of the interface.
  • the interface comprises a mechanism for recording the last transactions that have reached the memory circuit, this recording mechanism being accessible by the main processor via the interface itself.
  • the software controlling the interface uses previously the mechanism for recording the last transactions, to automatically determine the predetermined access sequences.
  • the interface comprises at least one control register capable of receiving commands from the HCPU, and where these commands are classified between highly ordered commands and low order commands; the low-order commands issued between two highly ordered commands forming a loosely ordered command set within which the low-order commands can be executed in the disorder; and where the highly ordered commands are executed in the order with respect to the other highly ordered commands and with respect to the sets of weakly ordered commands.
  • the interface comprises at least one control register capable of receiving commands from the HCPU, and where these commands are all strongly ordered between them.
  • the commands are reordered through the use of a number included in the commands themselves.
  • the commands are reordered through the use of a number included in the command addresses.
  • the commands are reordered through the use of numbers, part of a number being included in the order itself, the remainder of the number being included in the address of the order.
  • the auxiliary processor is not integrated in the memory circuit, but is integrated in a circuit connected to the memory circuit. According to one embodiment, there is no integrated processor and the memory is non-volatile.
  • Figure 1 schematically illustrates a computing system according to one embodiment
  • Figure 2 illustrates in more detail a memory interface of the system of Figure 1 according to one embodiment
  • Figure 3 illustrates in more detail a memory interface of the system of Figure 1 according to another embodiment.
  • the HCPU is usually a very powerful processor therefore able to execute instructions in the disorder (Out Of Order processor: 000 processor), also in addition to cache management instructions, the use of "memory barrier" instructions is possible to force the execution in a proper order of instructions.
  • a BM memory barrier instruction ensures that all accesses generated by instructions located before the BM instruction are fully realized from the standpoint of the CPU cache, before an access generated by an instruction after the BM instruction is performed.
  • the instruction set of a HCPU may include, for reasons of performance optimization, variations around this concept, with, for example, barrier instructions concerning only the writes or the readings.
  • mapped register means that the register is accessible to a physical address.
  • a register can be mapped several times: this means that it is accessible to several different physical addresses.
  • FIG. 1 illustrates a calculation system comprising a processing device 102 coupled by a bus, for example of the DDR (double data rate) type, to a memory circuit 104.
  • the bus comprises, for example, a bus data 106A and an address bus 106B.
  • the device 102 comprises, for example, one or more processing cores 108, a Central Processing Unit (CPU) cache memory 110, and a memory controller 112 comprising a cache memory 114.
  • the cache memory 114 is for example a Dynamic Random Access Memory (DRAM) cache memory in the case where the memory circuit 104 is a memory of the DRAM type.
  • DRAM Dynamic Random Access Memory
  • the memory circuit 104 comprises, for example, a memory 116, a processing device 118 and an interface 120.
  • the circuit 104 comprises, for example, an address translation circuit 122 comprising one or more registers 124 and a monitoring circuit 126. .
  • each interface register is mapped a number of times, which number depends on the characteristics of the DRAM cache.
  • the interface of the PIM processor 118 may comprise only 3 directly accessible registers, allowing indirect access to a much larger number of registers:
  • the memory circuit 104 contains 2 A memory Wmots, but to create numerous addresses, it is declared as having 2 A (N + i) memory words, with i> 0.
  • the boot code (BIOS / boot firmware) and the operating system (OS, Operating System) must take into account the actual size of the memory and not the declared size:
  • the OS must initialize the databases of its memory allocators taking into account the actual size of the memory.
  • the interface software uses, at each access to a register (for example access 208 to the register 202 and access 210 to the register 204 in Figure 2) a different address mapping it; Consequently :
  • the DRAM cache will "overflow" quickly, naturally pushing the transaction writes stored there to be executed.
  • - may, after a series of writes, generate access
  • the minimum size of the set of addresses mapping an interface register is based on the size and characteristics of the DRAM cache.
  • the address series mapping the command register is generated by a circular function F:
  • the state associated with a memory word is summed up with the address used for its last access (see a field of this address if part of the address remains fixed).
  • interface registers instead of being each associated with a private current address, can use a common common address, the latter being governed at each access in the following way:
  • the address of the access to a register is the result of the sum of an offset, depending on the register considered, and the common current address,
  • the common current address is updated by function F.
  • a weakly ordered class including, for example, commands writing data, instructions and parameters
  • the ownership of a command to one or the other class is encoded in the command itself.
  • the scheduling rules are as follows:
  • the highly ordered commands can be received in the wrong order by the recipient command register, but they must be executed in the order of their generation: for this, the strongly ordered commands are numbered at the time of their generation.
  • each strongly ordered command to a given command register includes an n-bit field for numbering it.
  • control buffer an n-bit counter, called current command number, containing the current number of the strongly ordered command to be executed.
  • the interface software can read the current command number to find out what is the last command executed, which allows it to know how many have been executed, and therefore how many new highly ordered commands it can generate without exceeding the buffer's capacity. ordered. Thus it can generate orders strongly ordered as the previous ones are executed.
  • part of the address where the command is written serves as the command number.
  • the address series mapping the command register is generated by a circular function F:
  • A2 is given by F (Al).
  • the command register is associated with the following hardware resources:
  • an n-bit counter named the current command number, containing the current number of the strongly ordered command to be executed.
  • command buffer a memory of M entries named command buffer, each entry being:
  • This method actually uses the two preceding methods, the number of the command consisting partly of a field of the address and partly of a field of the command. Reordering of low order orders
  • the second point is easy to determine by associating with each control register a register counting how many poorly ordered commands received by this control register have been executed.
  • a FIFO can be used to store low-order commands, in case the rhythm of their arrival can be greater than the rhythm of their executions. Avoidance of early readings
  • the DRAM cache may have logic adapted to detect such access pattern and decide to read data in advance based on this access pattern.
  • 1/4 of the physical address space of the memory circuit is dedicated to the interface of the PIM processor.
  • the number of its registers is very small, so each one of these registers will be mapped millions of times: allowing to easily solve the problem of access for these registers of interface.
  • one solution is to use an access window 305, called a mobile window, whose location 304 in the PIM memory 302 (and possibly the size) can be configured via interface registers. , this mobile window being mapped many times in a wide range of physical addresses 306 named multiple window.
  • the physical addresses of the PIM circuit could be organized as follows:
  • the 2 A (N + 1) physical addresses constitute the multiple window, where the mobile window is mapped many times.
  • the physical address space classically mapping the PIM memory may be used by the HCPU to access areas of the PIM memory that are not accessed by the PIM processor.
  • the PIM memory area on which the movable window is positioned may or may not remain accessible through the "conventional" physical address space of the PIM memory.
  • Access in the mobile window eg access
  • the mobile window is accessible via a plurality of physical address ranges, all of these physical address ranges constituting the multiple window.
  • the moving window is such that it is fully included in a page of the DRAM, the position of the moving window can be expressed as a pair ⁇ x, y ⁇ :
  • the interface software When the interface software has written all the affected areas, it uses bogus access, to push out of the DRAM cache the last writes that might be in wait.
  • the interface software can now use, for accessing the PIM memory currently targeted by the mobile window, all the previously described solutions for access to the interface register, in particular the use of address current common.
  • the interface software modifies a common or common current address only when it is used for an access: it is not modified by moving the moving window .
  • the speed of the logic realizing the mechanism of the moving window can pose more problem as explained below.
  • the position of the moving window can be expressed by a pair ⁇ x, y ⁇ :
  • the mobile window is therefore associated with the page x, of the PIM memory, this association being programmable via interface registers.
  • the decoding of this case is simple because it is enough to look at very few bits of the number of a page number to determine that this page belongs to the multiple window.
  • predetermined access sequences are used to fill the DRAM cache with unimportant transactions: - chasing the writes pending: thus realizing their updates
  • DCW_BARRIER (Dram Cache Write Barrier) Write barrier for DRAM caches: Ensures that all writes made before the start of DCW_BARRIER are effective (visible by the PIM processor) at the end of DCW_BARRIER.
  • DCR_BARRIER (Dram Cache Read Barrier) Read Barrier for DRAM Cache: Ensures that all data read after the end of DCR_BARRIER is newer than the date that DCR_BARRIER was started.
  • DCM_BARRIER Dram Cache Memory Barrier
  • Some DRAM cache architectures may be such that the DCW_BARRIER, DCR_BARRIER, and DCM_BARRIER sequences can be reduced, and thus reduce their execution time, if the effect of these barriers applies only to a range of addresses specified in parameter.
  • BARRIER access sequence variants can be:
  • DCW_BARRIER (start_addr, end_addr) ensures that all writes made before the start of DCW_BARRIER (start_addr, end_addr) in the address range ⁇ start_addr: end_addr ⁇ are effective at the end of DCW BARRIER (start addr, end addr).
  • DCR_BARRIER (start_addr, end_addr) ensures that all values read in the range ⁇ start_addr: end_addr ⁇ after the end of DCR_BARRIER (start_addr, end_addr) are newer than the date that DCR_BARRIER (start_addr, end_addr) was started .
  • DCM_BARRIER start_addr, end_addr equivaux indifferently to:
  • a non-volatile memory without a PIM processor, can nevertheless have an interface allowing it to use all the aspects of the invention, in particular those allowing:
  • the address sequences to be used in the invention depend on the characteristics of the DRAM cache.
  • This kind of analysis is commonly performed among others by manufacturers of DRAMs and memory cards DIMMs, including to develop their products and verify their compliance, but also by manufacturers of computers using HCPU processors, for the development point of their systems.
  • analysis systems such as those of the company Tektronix, capable of analyzing the traffic of a DRAM controller of an HCPU processor.
  • the interface may comprise hardware means for recording the last N transactions arrived, or at least or a sufficient part of their characteristics, this record being accessible via the interface itself.
  • a DRAM memory is organized into banks, pages and columns.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

L'invention concerne un système de calcul comprenant: un dispositif de calcul (102) ayant un ou plusieurs cœurs de traitement (108) sous commande d'instructions et un contrôleur mémoire (112), le contrôleur mémoire comprenant une mémoire cache(114); et un circuit mémoire (104) couplé au contrôleur mémoire (112) par l'intermédiaire d'un bus de données (106A) et d'un bus d'adresses (106B), le circuit mémoire (104) étant adapté à avoir un premier emplacement mémoire de m bits accessible par une pluralité de premières adresses fournies sur le bus d'adresses (106), le dispositif de calcul (102) étant configuré pour sélectionner, pour chaque opération mémoire accédant au premier emplacement mémoire de m bits, une adresse parmi la pluralité de premières adresses.

Description

METHODES ET DISPOSITIFS POUR CONTOURNER LE CACHE INTERNE D'UN CONTROLEUR MEMOIRE DRAM EVOLUE
La présente demande de brevet revendique la priorité de la demande de brevet français FRl 6/58373 qui sera considérée comme faisant partie intégrante de la présente description.
DOMAINE
La présente demande concerne un système de calcul comprenant un processeur, une mémoire, et une interface de commande entre le processeur et la mémoire.
EXPOSE DE L'ART ANTERIEUR
Un processeur PIM (Processor In Memory) est un processeur intégré directement dans un circuit mémoire, par exemple dans un circuit mémoire DRAM. Dans ce document ce circuit mémoire est appelé circuit PIM.
Un processeur PIM est contrôlé par un processeur principal, typiquement un processeur Intel, ARM ou Power. Dans ce document ce processeur est appelé HCPU (Host CPU) .
Le processeur PIM et le HCPU ont accès à la mémoire dans laquelle le processeur PIM est intégré. Dans ce document cette mémoire est appelée mémoire PIM.
La demande de brevet publiée sous le numéro FR 3032814 décrit par exemple un moyen de permettre aux processeurs PIM et HCPU d'accéder à la mémoire PIM. Chaque processeur PIM possède des registres permettant au HCPU de le contrôler. Ces registres, accessibles par le HCPU, sont visibles dans l'espace d'adressage physique du circuit PIM. Dans ce document ces registres sont appelés registres d'interface, l'ensemble des registres d'interface d'un processeur PIM étant appelé l'interface de ce processeur PIM, et le logiciel, s 'exécutant sur le HCPU, contrôlant cette interface étant appelé le logiciel d'interface.
Caractérisation des communications
Le HCPU effectue typiquement les actions suivantes pour utiliser un processeur PIM :
- beaucoup d'écritures de paramètres, instructions et données, dans la mémoire PIM ;
relativement peu d'écritures de paramètres, instructions, données et commandes, dans des registres d'interface de ce processeur PIM ;
- relativement peu de lectures d'état et de résultats depuis des registres d'interface du processeur PIM ;
- beaucoup de lectures de résultats depuis la mémoire PIM.
Problème d'écritures différées
Les écritures générées par le HCPU ayant comme destination soit l'interface d'un processeur PIM, soit la mémoire PIM, doivent être réalisées sans délai.
Un HCPU possède un système de cache et ce dernier peut retarder d'un temps indéterminé une écriture dans le circuit PIM.
Les processeurs HCPUs disposent d'instructions de gestion de cache permettant de forcer la mise à jour en mémoire principale, d'une donnée spécifiée par son adresse, dont l'écriture n'a pour l'instant eu lieu que dans le cache du processeur.
Malheureusement ces instructions de gestion de cache n'affectent pas le cache du contrôleur DRAM quand celui en possède un, ce qui est le cas des processeurs hautes performances comme les HCPUs. Aussi ces instructions de mise à jour garantissent qu'une donnée écrite est "poussée" jusqu'au contrôleur DRAM, mais ne garantissent pas qu'elle soit "poussée" jusqu'au circuit mémoire .
Quand un système possède de la mémoire normale, sans processeur PIM intégré, le logiciel n'a aucun besoin d'utiliser une instruction de gestion de cache après une écriture, car le fait que cette écriture atteigne le circuit mémoire rapidement n'a pas importance.
Le cache affecté par les instructions de gestion de cache est nommé dans ce document "cache CPU" , le cache non-affecté par ces instructions étant nommé "cache DRAM" .
Problème d'écritures différées dans des mémoires non volatile
Les écritures différées sont également un problème pour des mémoires non-volatile n'intégrant pas de processeur PIM.
Par exemple certaines mémoires MRAM (mémoire magnétique) , comme celle fabriquées par la société EVERSPIN, sont conçues pour présenter une interface compatible DRAM, permettant de les utiliser avec un contrôleur DRAM.
Avant de pouvoir couper l'alimentation électrique d'un système informatique utilisant de telles mémoires, il est important de pouvoir être sûr qu'il n'y a plus d'écriture ciblant la MRAM qui soit en attente dans le cache DRAM, autrement ces écritures seraient perdues quand le courant serait stoppé.
Problème d'écritures fusionnées
Un autre problème est que si une donnée Cl à écrire à une certain adresse est stockée dans le cache DRAM, cette donnée peut être remplacée par l'arrivée d'une nouvelle donnée C2 pour la même adresse, le cache DRAM considérant optimal de ne pas écrire Cl dans le circuit mémoire, Cl étant supplantée par C2.
Si ce raisonnement est juste pour une mémoire, il ne l'est pas pour un registre d'interface recevant des commandes du HCPU : si Cl et C2 sont deux commandes, il est nécessaire que Cl puis C2 soient écrites dans le circuit PIM.
Problème d'écritures réordonnées Un autre problème est que le cache DRAM peut changer l'ordre dans lequel les écritures de données sont réalisées, ce qui est problématique même quand ces écritures sont à des adresses différentes .
Ainsi une séquence composée :
- de l'écriture d'un paramètre d'une commande dans un registre d'interface nommé PARAM,
- puis de l'écriture de la commande correspondante dans un autre registre d'interface nommé CMD ;
peut être réalisée en sens inverse par le cache DRAM, faisant que la commande écrite dans CMD va être exécutée en utilisant comme paramètre l'ancienne valeur du registre PARAM, celui-ci n'ayant pas encore été écrit par le nouveau paramètre.
Problème de valeurs cachées obsolètes
Quand le HCPU lit une valeur V2 à une adresse AV, cette valeur V2 ayant été générée par un processeur PIM, il est important que la valeur lue par le HCPU soit bien cette valeur récente V2, et non une valeur antérieur VI qui aurait été copiée dans un cache lors d'une lecture antérieure à la génération de V2, à cette même adresse AV.
Les processeurs HCPUs disposent d'instructions de gestion de cache, permettant notamment d'invalider dans le cache une donnée spécifiée par son adresse.
Aussi après l'exécution d'une telle instruction avec comme paramètre l'adresse AV, la valeur VI n'est plus présente dans le cache, et si le HCPU relis une donnée à l'adresse AV, il va obtenir la valeur V2 du circuit mémoire et le cache va cacher maintenant cette valeur V2.
Malheureusement ces instructions de gestion de cache n'affectent pas le cache DRAM.
Aussi une instruction d'invalidation ciblant l'adresse AV garantit que la valeur VI n'est plus présente dans le cache CPU, mais ne garantit pas que la valeur VI ne soit pas toujours présente dans le cache DRAM.
Si tel est le cas quand le HCPU va relire l'adresse AV, comme cette adresse n'est plus dans le cache CPU, celui-ci va demander une lecture à l'adresse AV au contrôleur DRAM. Mais ce dernier a une entrée de son cache DRAM qui :
- est valide,
- correspond à l'adresse AV,
- contient toujours l'ancienne valeur VI.
Aussi au lieu de lire la valeur V2 depuis le circuit PIM, le contrôleur DRAM va juste retourner la valeur VI depuis son cache DRAM.
Quand un système possède de la mémoire normale, sans processeur PIM intégré, le logiciel n'a aucun besoin d'utiliser une instruction de gestion de cache avant de lire une donnée : une donnée dans le cache CPU étant toujours la plus récente car seul le HCPU modifie la mémoire, alors que dans un système avec un processeur PIM, ce dernier peut aussi modifier la mémoire. Modification des HCPUs
La solution la plus logique serait que les HCPUs soient modifiés afin que les instructions de gestions de cache affectent également les caches DRAM.
Malheureusement il est très difficile de convaincre un fabriquant de HCPU de réaliser une telle modification, car :
- le coût de conception d'un HCPU est très important et cette conception s'étale sur plusieurs années,
- un retard dans la conception du HCPU du à cette modification aurait un coût très importantes pour le fabricant,
- le support de processeur PIM via une telle modification peut aller à l' encontre de la stratégie industrielle et commerciale du fabricant .
Il y a donc un besoin pour une solution aux problèmes de communication entre un HCPU et un processeur PIM intégré dans une DRAM, qui ne nécessite pas de modifier les HCPUs, mais qui soit entièrement implémentée :
- dans l'interface du processeur PIM, et
- par le logiciel d'interface.
RESUME
Ainsi, un mode de réalisation prévoit un système de calcul comprenant : un dispositif de calcul ayant un ou plusieurs cœurs de traitement sous commande d' instructions et un contrôleur mémoire, le contrôleur mémoire comprenant une mémoire cache ; et un circuit mémoire couplé au contrôleur mémoire par l'intermédiaire d'un bus de données et d'un bus d'adresses, le circuit mémoire étant adapté à avoir un premier emplacement mémoire de m bits accessible par une pluralité de premières adresses fournies sur le bus d'adresses, le dispositif de calcul étant configuré pour sélectionner, pour chaque opération mémoire accédant au premier emplacement mémoire de m bits, une adresse parmi la pluralité de premières adresses.
Selon un mode de réalisation, le premier emplacement mémoire de m bits est accessible par une pluralité P de premières adresses, le dispositif de calcul étant configuré pour utiliser une première des adresses pour accéder au premier emplacement mémoire pendant une Nième et un (N+P) ième opérations d'accès au premier emplacement mémoire.
Selon un mode de réalisation, chaque adresse de la pluralité de premières adresses comprend une première valeur de n bits et une seconde valeur de p bits, le dispositif de calcul étant configuré pour effectuer une opération d'écriture de données d'écriture vers les m bits du premier emplacement mémoire en réalisant une opération de lecture du premier emplacement mémoire en utilisant l'une des premières adresses ayant une première valeur à n bits sélectionnée et une seconde valeur à p bits générée en fonction des données d'écriture.
Selon un mode de réalisation, le circuit mémoire est adapté, en réponse à la réception d'une opération de lecture vers le premier emplacement mémoire utilisant l'une parmi des premières adresses, à écrire la deuxième valeur à p bits de l'adresse dans le premier emplacement mémoire.
Selon un mode de réalisation, p et m sont des entiers positifs et m est égal ou supérieur à p.
Selon un mode de réalisation, le circuit mémoire est adapté à avoir un deuxième emplacement mémoire accessible par une pluralité de deuxièmes adresses fournies sur le bus d'adresses. Selon un mode de réalisation, les premier et deuxième emplacements mémoire font partis d'une première plage d'emplacements mémoire du circuit mémoire, la première plage d' emplacements mémoire étant sélectionnée par une fenêtre d'adresses glissante, dans lesquels les emplacements mémoire de la première plage d'emplacements mémoire sont adressables :
par des adresses correspondantes dans une première plage d'adresses comprenant une de la première pluralité d'adresses et une de la deuxième pluralité d'adresses ; et
par des adresses correspondantes dans une deuxième plage d'adresses comprenant un autre de la première pluralité d'adresses et une autre de la deuxième pluralité d'adresses ;
le circuit mémoire comprenant un circuit de conversion d'adresses adapté à convertir des adresses dans les première et deuxième plages d'adresses vers des adresses correspondantes dans la fenêtre d'adresses glissante.
Selon un mode de réalisation, le circuit de conversion d'adresses comprend au moins un registre programmable pour définir l'emplacement de la fenêtre d'adresses glissante.
Selon un mode de réalisation, ledit au moins un registre du circuit de conversion d'adresses est programmable pour définir l'emplacement et la taille de la fenêtre d'adresses glissante.
Selon un mode de réalisation, le contrôleur mémoire est adapté à effectuer une opération d'évacuation de cache, l'opération d'évacuation de cache comprenant une ou plusieurs séquences d'instructions d'accès mémoire réalisées par le contrôleur mémoire ayant comme résultat que :
tout ou partie des transactions d'écriture de mémoire cache stockées dans la mémoire cache du contrôleur mémoire est écrit vers le circuit mémoire ; ou
tout ou partie des données de lecture stockées dans la mémoire cache du contrôleur mémoire est évacué de la mémoire cache, les données de lecture comprenant des données lues à partir du circuit mémoire avant l'opération d'évacuation de cache ; ou tout ou partie des transactions d'écriture de mémoire cache stockées dans la mémoire cache du contrôleur mémoire est écrit vers le circuit mémoire et tout ou partie des données de lecture stockées dans la mémoire cache du contrôleur mémoire est évacué de la mémoire cache.
Selon un mode de réalisation, le circuit mémoire comprend en outre un processeur auxiliaire, et la séquence d' instructions d' accès mémoire comprend uniquement des instructions d'accès de registre pour accéder à un ou plusieurs registres de commande du circuit mémoire pour commander le processeur auxiliaire.
Selon un mode de réalisation, le circuit mémoire comprend un circuit de surveillance, accessible par le dispositif de calcul, et adapté à enregistrer des transactions d'accès mémoire effectuées dans le circuit mémoire, le dispositif de calcul étant configuré pour générer lesdites une ou plusieurs séquences d'instructions d'accès mémoire sur la base des transactions enregistrées par le circuit de surveillance.
Selon un mode de réalisation, le circuit mémoire comprend en outre un processeur auxiliaire, les premier et deuxième emplacements mémoire étant des registres de commande du processeur auxiliaire.
Selon un mode de réalisation, le dispositif de calcul est configuré pour générer des commandes d'un premier type et des commandes d'un deuxième type, le circuit mémoire étant adapté à modifier l'ordre des commandes reçues du dispositif de calcul de telle sorte que, pour un premier groupe de commandes du deuxième type généré par le dispositif de calcul entre des première et deuxième commandes du premier type, l'ordre des première et deuxième commandes du premier type par rapport au groupe de commandes du deuxième type est respecté.
Selon un mode de réalisation, le circuit mémoire est adapté à modifier l'ordre des commandes sur la base d'une valeur d'ordre associée à au moins chaque commande du premier type, la valeur d' ordre de chaque commande étant incluse :
dans l'adresse du destinataire de la commande ; ou dans la commande elle-même ; ou partiellement dans l'adresse du destinataire de la commande et partiellement dans la commande elle-même.
Selon un mode de réalisation, le dispositif de calcul comprend en outre une mémoire cache CPU configurable par des instructions de gestion de cache, la mémoire cache du contrôleur mémoire n'étant pas configurable par des instructions de gestion de cache.
Selon un mode de réalisation, le circuit mémoire comprend une matrice mémoire non volatile.
Un autre mode de réalisation prévoit un procédé d'accès à un circuit mémoire couplé à un contrôleur mémoire d'un dispositif de calcul par l'intermédiaire d'un bus de données et d'un bus d'adresses, le dispositif de calcul ayant un ou plusieurs cœurs de traitement et le contrôleur mémoire comprenant une mémoire cache, le procédé comprenant : sélectionner, par le dispositif de calcul, pour chaque opération mémoire accédant à un premier emplacement de mémoire de m bits du circuit mémoire, une adresse parmi une pluralité de premières adresses, le premier emplacement mémoire de m bits étant accessible par chacune de la pluralité des premières adresses fournies sur le bus d'adresses.
Selon un autre aspect, il est prévu un système composé d'un circuit principal et d'au moins un circuit mémoire ; le circuit principal comprenant au moins un processeur principal et un contrôleur mémoire connecté au circuit mémoire ; le contrôleur mémoire comprenant un cache qui n'est pas affecté par les instructions de gestion de cache du processeur principal ; le circuit mémoire intégrant au moins un processeur auxiliaire ; ce processeur auxiliaire comprenant une interface accessible au processeur principal ; cette interface comprenant des registres, chaque registre de cette interfaces étant accessible par le processeur principal à travers une pluralité d'adresses ; l'interface étant contrôlée par un logiciel s 'exécutant sur le processeur principal, le logiciel choisissant pour chacun des accès à un registre donné de l'interface, une adresse parmi la pluralité d'adresses correspondantes à ce registre. Selon un mode de réalisation, le choix de l'adresse pour accéder à un registre de l'interface donné, se fait de tel façon, qu'une adresse, utilisée lors du N ième accès à ce registre, sera utilisée lors du (N+P) ième accès à ce registre, P étant le nombre d'adresses composant la pluralité d'adresses associées à ce registre .
Selon un mode de réalisation, l'adresse d'accès à au moins un registre d'interface est construite par l'assemblage d'un premier champ de n-bit nommé champ majeur, avec un deuxième champs de p-bit, nommé champ mineur, où la valeur du champ majeur est choisie parmi une pluralité de valeurs, et où la valeur du champ mineur peut avoir n'importe quelle valeur comprise entre 0 et (2AP)-1, la lecture du registre d'interface à l'adresse {champ majeur, champ mineur} entraînant l'écriture de celui-ci par la valeur champ mineur, le logiciel utilisant de telle lectures pour écrire des valeurs dans le registre d'interface.
Selon un mode de réalisation, les valeurs possibles du champ mineur sont restreintes aux valeurs qui peuvent être écrite dans le registre d'interface.
L'avantage de l'utilisation, lors d'une opération de lecture, d'un champ de l'adresse pour transmettre des bits à écrire dans la mémoire est que 1 ' opération de lecture ne risque pas d'être mise en attente dans la mémoire cache, comme pourrait l'être une opération d'écriture.
Selon un mode de réalisation, des registres de l'interface permettent de configurer la position et le cas échéant la taille, d'une fenêtre d'accès additionnelle sur une zone de la mémoire du circuit mémoire, cette fenêtre d'accès étant accessible à travers une pluralité de plage d'adresses, et où le logiciel d'interface réalise des accès à la mémoire du circuit mémoire en positionnant cette fenêtre d'accès sur la zone mémoire concernée, et choisi les adresses d'accès dans la pluralité de plage d'adresses permettant d'accéder à cette fenêtre d'accès.
Selon un mode de réalisation, le logiciel d'interface choisi les adresses pour accéder à la fenêtre d'accès de telle façon que si l'adresse du N ième accès à la fenêtre d'accès est choisie parmi une plage d'adresse donnée, alors l'adresse du (N+P) ième accès sera choisie dans cette même plage d'adresse, P étant le nombre de plage d'adresse composant la pluralité de plage d' adresses .
Selon un mode de réalisation, le logiciel contrôlant l'interface utilise une séquence d'accès, choisie parmi un ensemble de séquences d'accès prédéterminées, pour chasser du cache du contrôleur mémoire les transactions d'écriture émises préalablement à cette séquence, forçant ainsi la réalisation effective de ces transactions d'écriture, la détermination des séquences d'accès prédéterminées se faisant à partir des caractéristiques connues ou déduite de l'observation, du cache du contrôleur mémoire.
Selon un mode de réalisation, le logiciel contrôlant l'interface utilise une séquence d'accès, choisie parmi un ensemble de séquences d'accès prédéterminées, pour chasser du cache du contrôleur mémoire les données lues préalablement à cette séquence, la détermination des séquences prédéterminées se faisant à partir des caractéristiques connues ou déduite de l'observation, du cache du contrôleur mémoire.
Selon un mode de réalisation, le logiciel contrôlant l'interface utilise une séquence d'accès, choisie parmi un ensemble de séquences d'accès prédéterminées, pour chasser du cache du contrôleur mémoire les transaction d'écriture et les données lues préalablement à cette séquence, la détermination des séquences prédéterminées se faisant à partir des caractéristiques connues ou déduite de l'observation, du cache du contrôleur mémoire .
Selon un mode de réalisation, la séquence d'accès est réduite, de telle façon qu'elle ne garantisse l'éviction du cache du contrôleur mémoire que des transactions d'écriture ou des données lues, correspondant à un sous ensemble des adresses physiques associés au circuit mémoire.
Selon un mode de réalisation, les séquences d'accès prédéterminées ne comprennent que des accès à des registres de 1 ' interface . Selon un mode de réalisation, l'interface comprend un mécanisme d'enregistrement des dernières transactions ayant atteintes le circuit mémoire, ce mécanisme d'enregistrement étant accessible par le processeur principal via l'interface elle-même.
Selon un mode de réalisation, le logiciel contrôlant l'interface utilise préalablement le mécanisme d'enregistrement des dernières transactions, pour déterminer automatiquement les séquences d'accès prédéterminées.
Selon un mode de réalisation, l'interface comprend au moins un registre de commande aptes à recevoir des commandes du HCPU, et ou ces commandes sont classées entre des commandes fortement ordonnées et des commandes faiblement ordonnées ; les commandes faiblement ordonnées émises entre deux commandes fortement ordonnées formant un ensemble de commande faiblement ordonnées à l'intérieur duquel les commandes faiblement ordonnée peuvent être exécutées dans le désordre ; et ou les commandes fortement ordonnées sont exécuté dans l'ordre vis à vis des autres commandes fortement ordonnées et vis à vis des ensembles de commandes faiblement ordonnées.
Selon un mode de réalisation, l'interface comprend au moins un registre de commande aptes à recevoir des commandes du HCPU, et ou ces commandes sont toutes fortement ordonnées entre elles .
Selon un mode de réalisation, les commandes sont réordonnées grâce à l'utilisation d'un numéro compris dans les commandes elles même.
Selon un mode de réalisation, les commandes sont réordonnées grâce à l'utilisation d'un numéro compris dans les adresses des commandes.
Selon un mode de réalisation, les commandes sont réordonnées grâce à l'utilisation de numéros, une partie d'un numéro étant comprise dans la commande elle-même, le reste du numéro étant compris dans l'adresse de la commande.
Selon un mode de réalisation, le processeur auxiliaire n'est pas intégré dans le circuit mémoire, mais est intégré dans un circuit connecté au circuit mémoire. Selon un mode de réalisation, il n'y a pas de processeur intégré et la mémoire est non volatile.
BREVE DESCRIPTION DES DESSINS
Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles :
la figure 1 illustre schématiquement un système de calcul selon un mode de réalisation ;
la figure 2 illustre plus en détail une interface mémoire du système de la figure 1 selon un mode de réalisation ; et
la figure 3 illustre plus en détail une interface mémoire du système de la figure 1 selon un autre mode de réalisation.
DESCRIPTION DETAILLEE
Le cache DRAM
Taille du cache DRAM
La présence d'un cache DRAM permet les optimisations suivantes :
le réordonnancement des requêtes aux circuits mémoires, comprenant notamment les requêtes de rafraîchissement, afin de minimiser les ouvertures de pages, opérations particulièrement lentes,
- la lecture anticipée de données qui seront probablement accédées prochainement.
La taille considérable du cache CPU (jusqu'à plusieurs dizaines de Mo) fait qu'il n'est pas nécessaire que le cache DRAM soit d'une taille importante pour que l'essentiel des gains en performance qu'il puisse apporter soit atteint.
Il est notable que les documents marketings des fabricants de HCPU mentionnent toujours la taille du cache CPU mais jamais l'existence même du cache DRAM : cela n'est le cas que parce que sa taille est négligeable en comparaison de celle du cache CPU. Applicabilité
La question se pose d'utiliser les techniques, décrites plus loin, pour se passer totalement des instructions de gestion de cache, car si ces techniques fonctionnent sur le cache DRAM, on pourrait imaginer qu'elles fonctionnent également sur le cache CPU.
Mais ces techniques risquent de ne pas être performantes lorsque qu'elles sont appliquées à des caches de grandes tailles, alors que les instructions de gestions de cache sont tout à fait adaptées à la gestion de tels caches.
Aussi il n'y a aucune raison ne pas utiliser les instructions de gestion de cache, les techniques décrites étant utilisées pour les compléter et non pour les remplacer.
Convention : Usage implicite des instructions de gestion de cache
Dans ce document, et afin de simplifier les explications, les instructions de gestions de cache sont implicitement utilisées dans les cas suivants :
quand il est dit que le HCPU écrit une donnée, il faut comprendre que le HCPU réalise en fait les deux actions suivantes :
il écrit cette donnée en utilisant une instruction normale d'écriture en mémoire,
- il utilise une instruction de gestion de cache mettant à jour l'entrée correspondante du cache CPU mais n'affectant pas le cache DRAM.
quand il est dit que le HCPU lit une donnée, il faut comprendre que le HCPU réalise en fait les deux actions suivantes :
- il utilise une instruction de gestion de cache invalidant l'entrée correspondante du cache CPU mais n'affectant pas le cache DRAM,
- il lit cette donnée en utilisant une instruction normale de lecture en mémoire.
Usage implicite d'instruction de barrière mémoires
Le HCPU est habituellement un processeur très performant donc capable d'exécuter des instructions dans le désordre (Out Of Order processor : 000 processor) , aussi en plus des instructions de gestion de cache, l'usage d'instructions de "barrière mémoire" est possible pour forcer l'exécution dans un ordre adéquat des instructions .
Une instruction de barrière mémoire BM assure que tous les accès générés par des instructions situées avant l'instruction BM sont entièrement réalisés du point de vue du cache CPU, avant qu'un accès généré par une instruction situé après l'instruction BM soit réalisé.
Le jeu d'instruction d'un HCPU peut comprendre, pour des raisons d'optimisation des performances, des variations autour de ce concept, avec, par exemple, des instructions barrières ne concernant que les écritures ou que les lectures.
Tout cela est bien connu de l'homme de l'art, qui choisira, le cas échéant, l'instruction barrière la plus adéquate.
Solution pour les registres d'interfaces
Les techniques décrites ci-après pour résoudre les problèmes ci-dessus comprennent :
- la résolution des problèmes vis à vis des registres d'interface,
- la résolution des problèmes vis à vis de la mémoire
PIM.
La différence venant du fait que les registres de 1 ' interface sont beaucoup moins nombreux que les mots mémoire de la mémoire PIM.
L'expression registre "mappé" veut dire que le registre est accessible à une adresse physique. Un registre peut être mappé plusieurs fois : cela veut dire qu'il est accessible à plusieurs adresses physiques différentes.
Réduction du nombre de registres d'interface
La figure 1 illustre un système de calcul comprenant un dispositif de traitement 102 couplé par un bus, par exemple de type DDR (de l'anglais "Double Data Rate"), vers un circuit mémoire 104. Le bus comprend par exemple un bus de données 106A et un bus d'adresse 106B. Le dispositif 102 comprend par exemple un ou plusieurs coeurs de traitement 108, une mémoire cache CPU (de l'anglais "Central Processing Unit") 110, et un contrôleur mémoire 112 comprenant une mémoire cache 114. La mémoire cache 114 est par exemple une mémoire cache DRAM (de l'anglais "Dynamic Random Access Memory) dans le cas où le circuit mémoire 104 est une mémoire de type DRAM.
Le circuit mémoire 104 comprend par exemple une mémoire 116, un dispositif de traitement 118 et une interface 120. De plus, le circuit 104 comprend par exemple un circuit de traduction d'adresse 122 comprenant un ou plusieurs registres 124 et un circuit de surveillance 126.
La solution prévoit que chaque registre d'interfaces est mappé un certain nombre de fois, ce nombre dépendant des caractéristiques du cache DRAM.
Pour une plage d'adresse physique d'une taille donnée, moins les registres d'interfaces sont nombreux, plus chacun d'entre eux pourra être mappé de nombreuses fois. Il est toujours possible de réaliser une interface ayant très peu de registres d'interface, donc pouvant avoir chacun de ses registres mappé un grand nombre de fois, en utilisant un système d'accès indirect.
Par exemple, l'interface du processeur PIM 118 peut comprendre seulement 3 registres directement accessibles, permettant un accès indirect à un nombre bien plus grand de registres :
- un registre index_registre, accessible seulement en écriture,
- un registre ecriture_registre, accessible seulement en écriture,
- un registre lecture_registre, accessible seulement en lecture .
Une telle interface permet d'accéder indirectement à un grand nombre de registres :
Pour lire un registre qui est accessible seulement indirectement, il faut : - écrire l'index de ce registre dans le registre index_registre
- lire le registre lecture_registre
Pour écrire un registre qui est accessible seulement indirectement, il faut :
- écrire l'index de ce registre dans le registre index_registre
- écrire la donnée à écrire dans le registre écriture registre
Dans ce document seul l'ensemble des registres d'interface d'un processeur PIM qui sont directement accessible par le HCPU, est nommé l'interface de ce processeur PIM ; du point de vue de l'invention, les registres indirectement accessibles ne faisant pas partie de l'interface du processeur PIM.
Création de très nombreuses adresses pour chaque registre d' interface
Comme illustré en figure 2, le circuit mémoire 104 contient 2AWmots mémoires, mais pour créer de nombreuses adresse, celui-ci est déclaré comme ayant 2A (N+i) mots mémoire, avec i > 0.
Une plage d'adresses physiques de taille 2AW étant consacrée à mapper les mots mémoires, il reste donc une plage d'adresse physique de taille ((2Ai)-l) x (2AW) disponible pour mapper les quelques registres 202, 204 de l'interface 120 du processeur PIM, permettant de mapper chacun de ces registres un très grand nombre de fois.
Le code de démarrage (BIOS / boot firmware) et le système d'exploitation (OS, Operating System) doivent tenir compte de la taille réelle de la mémoire et non de la taille déclarée :
- les tests mémoires effectués au démarrage du système ne doivent concerner que la plage d'adresse physique correspondant à la mémoire réelle,
- l'OS doit initialiser les bases de données de ses allocateurs mémoires en tenant compte de la taille réelle de la mémoire.
Mécanisme de l'invention pour les registres d'interface Pour les registres d'interface, le logiciel d'interface utilise, à chaque accès à un registre (par exemple des accès 208 au registre 202 et des accès 210 au registre 204 en figure 2) une adresse différente mappant celui-ci ; en conséquence :
- le cache DRAM ne va pas fournir une donnée qu'il a déjà dans l'une de ses entrée, car l'adresse ne correspondra pas : cela résolvant le problème des instructions d'invalidation de cache n'affectant pas le cache DRAM,
- le cache DRAM ne va pas fusionner des transactions d'écritures : de telle fusions nécessitant que les transactions aient une même adresse,
- le cache DRAM va "déborder" rapidement, poussant naturellement les transactions d'écritures qui y étaient stockées à être exécutées.
Concernant le dernier point, le logiciel d'interface :
- peut s'assurer à tout moment qu'une écriture a bien été réalisée, en relisant le registre d'interface destinataire de l'écriture (en utilisant bien sur une autre adresse mappant ce registre) ,
- peut, après une série d'écritures, générer des accès
"bidon", en lecture ou en écriture, n'ayant pour vocation que de pousser les écritures précédentes hors du cache DRAM, ceci causant leur réalisations (et il peut vérifier que ces écritures ont bien été faite, et générer de nouveaux accès bidon si tel n'est pas le cas) .
Bien sur un registre d'interface ne peut être mappé un nombre infini de fois, aussi passé un certain nombre d'accès à ce registre, l'ensemble des adresses mappant celui-ci va être épuisé et des adresses déjà utilisées vont être utilisées de nouveau.
C'est pourquoi l'ensemble des adresses disponibles pour chaque registre d'interface doit être suffisamment grand, pour qu'avant qu'une adresse soit réutilisée, il n'y ait aucune chance qu'une entrée dans le cache DRAM soit encore associée à cette adresse . La taille minimale de l'ensemble des adresses mappant un registre d'interface est bien sur fonction de la taille et des caractéristiques du cache DRAM.
Génération simple de la liste d'adresse
La série d'adresse mappant le registre de commande est générée par une fonction circulaire F :
- quand une adresse Al est utilisée, l'adresse suivante A2 est donnée par F (Al)
l'état associé à un mot mémoire, nommé adresse courante, se résume à l'adresse utilisée pour son dernier accès (voir un champ de cette adresse si une partie de l'adresse reste fixe) .
Série d'adresse commune
Plusieurs registres d'interface, au lieu d'être chacun associé à une adresse courante privée, peuvent utiliser une adresse courante commune, cette dernière étant régie à chaque accès de la façon suivante :
- l'adresse de l'accès à un registre est le résultat de la somme d'un offset, dépendant du registre considéré, et de l'adresse courante commune,
- après l'accès, l'adresse courante commune est mise à jour par la fonction F.
Réordonnancement des écritures de commandes
Un registre d'interface susceptible de recevoir des commandes est appelé dans ce document registre de commande, les commandes pouvant arriver à un tel registre étant divisées en deux classes :
une classe faiblement ordonnées : comprenant par exemple des commandes écrivant des données, des instructions et des paramètres,
une classe fortement ordonnées : comprenant par exemple des commandes :
- démarrant le processeur PIM,
- stoppant le processeur PIM,
- obtenant le statut du processeur PIM. L'appartenance d'une commande à l'une ou l'autre classe est encodée dans la commande elle-même. Les règles d'ordonnancement sont les suivantes :
les commandes faiblement ordonnées ne sont pas ordonnées entre elles :
- une commande faiblement ordonnée émise avant une autre commande faiblement ordonnée peut être exécutée après celle-ci,
les commandes faiblement ordonnées sont ordonnées vis à vis des commandes fortement ordonnées :
- une commande faiblement ordonnée émise avant une commande fortement ordonnée ne peut être exécuté après celle- ci,
- une commande faiblement ordonnée émise après une commande fortement ordonnée ne peut être exécuté avant celle- ci,
les commandes fortement ordonnées sont ordonnées entre elles :
- une commande fortement ordonnée émise avant une autre commande fortement ordonnée ne peut être exécuté après celle-ci .
Réordonnancement des commandes fortement ordonnées
A cause du cache DRAM, les commandes fortement ordonnées peuvent être reçues dans le désordre par le registre de commande destinataire, mais elles doivent cependant être exécutées dans 1 ' ordre de leur génération : pour cela les commandes fortement ordonnées sont numérotées lors de leur génération.
Numérotation dans la commande
Dans cette méthode chaque commande fortement ordonnée à destination d'un registre de commande donné, comprend un champ de n-bit servant à numéroter celle-ci.
De plus les ressources matérielles suivantes sont associées à ce registre de commande :
un compteur de n-bits, nommé numéro courant de commande, contenant le numéro courant de la commande fortement ordonnée à exécuter. une mémoire de 2An entrées, nommée tampon de commande, chaque entrée étant :
- capable d'être dans un état valide ou invalide,
- initialement dans l'état invalide, - capable, dans l'état valide, de stocker une commande fortement ordonnée .
Ces ressources matérielles observent l'algorithme suivant :
quand une commande fortement ordonnée est écrite dans le registre de commande, son numéro V est comparé avec le numéro courant de commande :
- si les numéros correspondent alors la commande est exécutée,
autrement la commande est enregistrée dans l'entrée du tampon de commande [V] et cette entrée est notée valide .
quand une commande fortement ordonnée est terminée, le numéro courant de commande est incrémenté, sa nouvelle valeur étant notée W, et :
- si l'entrée du tampon de commande [W] est valide alors la commande qu'elle contient est exécutée et l'entrée est marquée invalide.
Le logiciel d'interface peut lire le numéro courant de commande pour savoir quelle est la dernière commande exécutée, ce qui lui permet de savoir combien ont été exécutées, et donc combien de nouvelles commandes fortement ordonnées il peut générer sans dépasser la capacité du tampon de commande. Ainsi il peut générer des commandes fortement ordonnées au fur et à mesure que les précédentes sont exécutées.
Etablir une distinction entre commandes fortement ordonnées et commandes faiblement ordonnées permet :
- de limiter la taille du tampon de commande,
- d'exécuter des commandes faiblement ordonnées dans leur ordre d'arrivée plutôt que dans leur ordre d'émission, améliorant ainsi les performances, - d'exécuter des commandes faiblement ordonnées en parallèle si l'interface dispose du parallélisme interne pour le supporter.
Numérotation dans l'adresse
Dans cette méthode, qui est une variation de la méthode précédente, une partie de l'adresse où est écrite la commande sert de numéro de commande.
La série d'adresse mappant le registre de commande est générée par une fonction circulaire F :
- quand une adresse Al est utilisée, l'adresse suivant
A2 est donnée par F (Al) .
La fonction F :
- ne modifie en fait qu'un champ de n-bit de l'adresse, noté CA,
- définit un ensemble E de M valeurs possibles de CA.
Le registre de commande est associé aux ressources matérielles suivantes :
un compteur de n-bits, nommé le numéro courant de commande, contenant le numéro courant de la commande fortement ordonnée à exécuter.
une mémoire de M entrées nommée tampon de commande, chaque entrée étant :
uniquement indexée par une des valeurs de l'ensemble E,
- capable d'être dans un état valide ou invalide,
- initialement dans l'état invalide,
- capable, dans l'état valide, de stocker une commande fortement ordonnée .
Ces ressources matérielles observent l'algorithme suivant :
quand une commande fortement ordonnée arrive au registre de commande, son champ CA est comparé avec la valeur du numéro courant de commande :
si CA et le numéro courant de commande correspondent alors la commande est exécutée, autrement la commande est enregistrée dans 1 ' entrée du tampon de commande qui a pour index CA et cette entrée est notée valide.
quand une commande fortement ordonnée est terminée, le numéro courant de commande est modifié par la fonction F et :
- si l'entrée du tampon de commande désignée par le nouveau numéro courant de commande est valide alors la commande qu'elle contient est exécutée et l'entrée est marquée invalide.
Numérotation mixte
Cette méthode utilise en fait les deux méthodes précédentes, le numéro de la commande étant constitué pour partie d'un champ de l'adresse et pour partie d'un champ de la commande. Réordonnancement des commandes faiblement ordonnées
Les commandes faiblement ordonnées n'ont pas besoin d'être réordonnées entre elles, il faut juste s'assurer :
1. qu'il n'y a pas de commandes fortement ordonnées en attente d'exécution avant de générer des commandes faiblement ordonnées,
2. qu'il n'y a pas de commandes faiblement ordonnées en attente d'exécution avant de générer des commandes fortement ordonnées .
Le premier point est facile à déterminer étant donné que le logiciel d'interface :
- sait combien il a émis de commandes fortement ordonnées,
- peut savoir, en lisant le numéro de commande courante, combien de commandes fortement ordonnées ont été exécutées.
Le second point est facile à déterminer en associant à chaque registre de commande un registre comptant combien de commande faiblement ordonnées reçu par ce registre de commande ont été exécutées.
Note : une FIFO peut être utilisée pour stocker les commandes faiblement ordonnées, dans le cas où le rythme de leur arrivée puisse être supérieur au rythme de leurs exécutions. Evitement des lectures anticipées
Il est souhaitable d'éviter que le cache DRAM réalise des lectures anticipées . Ce genre de lecture peut être déclenché automatiquement quand le cache DRAM observe un motif d'accès régulier, comme par exemple une série d'accès ou chaque accès à lieu à une "distance d'adresse" (address stride) fixe de l'accès précédent. Le cache DRAM peut disposer d'une logique apte à détecter de tel motif d'accès et décider de lire des données en avance en se basant sur ce motif d'accès.
Note : dans un cache CPU avec une politique d'allocation d'écriture retardée ("write back") , politique d'allocation la plus courante car la plus performante en moyenne, une écriture dans la mémoire résulte initialement en une lecture.
Pour éviter les lectures anticipées il est souhaitable que l'ensemble des adresses disponibles pour un même registre d'interface soit balayé de telle façon que pour trois accès successif, N, N+l et N+2, à ce registre :
(adresse (N+2) - adresse (N+l)) <> (adresse (N+l) - adresse (N) )
Concernant cette logique de lecture anticipée du cache DRAM, il est probable que celle-ci tienne compte du fait que les adresses d'une série d'accès reste ou non dans la même page DRAM, et la série d'adresse utilisée pour accéder à un registre d'interface doit tenir compte de ce fait.
L'homme de l'art comprendra aisément quand fonction de la stratégie de lecture anticipée du cache DRAM, l'ordre d'utilisation des adresses peut être plus ou moins compliqué, mais qu'il est possible de générer un ordre tel que la logique de chargement anticipée ne soit pas activée, celle-ci ne reconnaissant aucun motif d'accès régulier.
En tout état de cause, pour se protéger de possible lecture anticipée, il est souhaitable que l'interface du processeur PIM ne comprenne pas de registres qui soient modifiés par leurs lectures. Solution pour la mémoire PIM
Les problèmes d'accès au registre d'interface sont résolus fondamentalement par le fait que chacun de ces registres est mappé de nombreuse fois .
Cela n'est pas possible avec la mémoire PIM. Par exemple, considérons une mémoire contenant 2AW mots mémoire déclarée comme une mémoire contenant 2A(W+2) mots mémoire : cette mémoire à 4 fois plus d'adresses que de mots mémoires.
Par symétrie, il est raisonnable de considérer qu'il n'est pas intéressant, pour résoudre le problème d'accès à la mémoire PIM, d'avoir des mots mémoires plus mappés que d'autres. Aussi il serait logique de faire la répartition suivante :
1/4 de l'espace d'adressage physique du circuit mémoire est dédié à l'interface du processeur PIM. Le nombre de ses registres est très faible, aussi chacun de ces registres va être mappé des millions de fois : permettant de résoudre aisément le problème d'accès pour ces registres d'interface.
- les 3/4 de l'espace d'adressage physique est dédié à mapper la mémoire PIM proprement dite, permettant en fait à chaque mot mémoire d'être mappé seulement 3 fois.
En conclusion il n'est pas possible de mapper suffisamment de fois chaque mot mémoire pour que le mécanisme de changement d'adresse à chaque accès soit effectif.
Solution utilisant une fenêtre mobile
Au lieu de déclarer la mémoire comme 4 fois plus grande, il faudrait la déclarer comme bien plus grande encore, ce qui n'est généralement pas possible, car correspondant à des configurations mémoires non supportées par le contrôleur mémoire DRAM.
Comme cela est illustré en figure 3, une solution est d'utiliser une fenêtre d'accès 305, nommé fenêtre mobile, dont l'emplacement 304 dans la mémoire PIM 302 (et éventuellement la taille) peut être configuré via des registres d'interface, cette fenêtre mobile étant mappée de nombreuse fois dans une grande plage d'adresses physiques 306 nommée fenêtre multiple. Organisation des adresses physiques
Par exemple, et considérant une mémoire PIM dont la taille déclarée est 4 fois plus grande que la taille réelle comme dans l'exemple précédent, les adresses physiques du circuit PIM pourraient être organisées comme suit :
les premières 2AN adresses physiques mappent classiquement la mémoire réelle,
les 2AN adresses physiques suivante mappent de nombreuse fois l'interface,
- les 2A(N+1) adresses physiques constituent la fenêtre multiple, où la fenêtre mobile est mappée de nombreuse fois.
Note : l'espace d'adresse physique mappant classiquement la mémoire PIM peut être utilisée par le HCPU pour accéder aux zones de la mémoire PIM qui ne sont pas accédées par le processeur PIM.
Note : en fonction de la réalisation de l'invention, la zone de mémoire PIM sur laquelle la fenêtre mobile est positionnée, peut rester ou non, accessible à travers l'espace d'adresse physique "classique" de la mémoire PIM.
Un accès dans la fenêtre mobile (par exemple des accès
308, 310 et 312 en figure 3) va donc être transformé en un accès dans la zone mémoire PIM sur laquelle cette fenêtre mobile est couramment positionnée (par exemple des accès 308', 310' et 312' en figure 3) .
La fenêtre mobile est accessible via une pluralité de plages d'adresses physiques, l'ensemble de ces plages d'adresses physiques constituant la fenêtre multiple.
La fenêtre mobile est telle qu'elle est entièrement incluse dans une page de la DRAM, la position de la fenêtre mobile pouvant être exprimées comme un couple {x, y} :
- x étant un numéro de page,
- y étant un offset en octet dans la page,
où la taille de la fenêtre mobile et les valeurs possibles de y sont telles que la fenêtre mobile ne peut jamais se retrouver à chevaucher deux pages de la mémoire PIM. Quand le logiciel d'interface veut accéder à des zones de mémoire PIM :
- il configure un ou plusieurs registres d'interface pour faire coïncider la fenêtre mobile avec la zone mémoire considérée,
- il utilise des accès avec des adresses changeantes pour réaliser les accès qu'il souhaite,
- il peut alors passer à la zone suivante, sous réserve que tous les accès réalisés à travers la fenêtre mobile ont été fait :
- les écritures sont effectives,
- les lectures sont effectives.
Note : concernant les deux derniers sous-points, si le HCPU est un processeur 000, l'usage d'instructions de barrière mémoire peut s'avérer nécessaire.
Quand le logiciel d'interface a écrit toutes les zones concernées, il utilise des accès bidon, pour pousser hors du cache DRAM les dernières écritures qui pourraient s'y trouver en attentes .
D'une façon générale, le logiciel d'interface peut maintenant utiliser, pour accéder à la mémoire PIM couramment ciblée par la fenêtre mobile, toutes les solutions précédemment décrites pour l'accès au registre d'interface, notamment l'usage d'adresse courante commune.
Déplacement de la fenêtre mobile :
- déplacer la fenêtre mobile ne modifie pas les adresses courantes ou communes : le logiciel d'interface modifie une adresse courante privée ou commune que lorsque celle-ci est utilisée pour un accès : elle n'est pas modifiée par le déplacement de la fenêtre mobile.
- tous les accès ayant utilisé un positionnement de la fenêtre mobile, doivent être effectifs (doivent avoir atteint le circuit mémoire) , avant le déplacement de celle-ci à une autre position. Considérations sur le temps de traversée de la logique réalisant
1 ' invention :
La réalisation de quelque registre d'interface, mappés de nombreuse fois, ne pose pas de difficulté significative concernant la vitesse de la logique, du fait notamment que le nombre de tels registres est très faible.
La vitesse de la logique réalisant le mécanisme de la fenêtre mobile peut quant à lui poser plus de problème comme expliqué ci-après.
Comme précédemment indiqué, la position de la fenêtre mobile peut être exprimées par un couple {x, y} :
- x étant un numéro de page,
- y étant un offset en octet dans la page.
La fenêtre mobile est donc associée à la page x, de la mémoire PIM, cette association étant programmable via des registres d'interfaces.
Quand le contrôleur mémoire DRAM émet une transaction d'activation de page ciblant n'importe qu'elle page p de la fenêtre multiple, alors le numéro de page p doit être remplacé par le numéro de page x.
Le décodage de ce cas est simple car il suffit de regarder très peu de bit du numéro d'un numéro de page pour déterminer que cette page appartient à la fenêtre multiple.
Néanmoins ce décodage simple, et le remplacement de la valeur p par la valeur x, rallonge légèrement le temps de traversé du chemin logique constitué par la logique d'activation du circuit mémoire .
Pour réaliser le mécanisme de la fenêtre logique il peut être prévu de rallonger légèrement la latence d'une opération d'activation, la valeur de celle-ci pouvant être programmée dans le contrôleur mémoire.
Méthode des barrières d'accès
Dans cette méthode, des séquences d'accès prédéterminées sont utilisées pour remplir le cache DRAM de transactions sans importance : - chassant les écritures en attente : réalisant donc leurs mises à jour
- chassant des données lues : réalisant donc leur invalidation
Connaissant les caractéristiques du cache DRAM, il est possible de créer les séquences d'accès suivantes :
DCW_BARRIER (Dram Cache Write Barrier) , barrière d'écriture pour les caches DRAM : assure que toute les écritures faites avant le commencement de DCW_BARRIER sont effectives (visible par le processeur PIM) à la fin de DCW_BARRIER.
DCR_BARRIER (Dram Cache Read Barrier) , barrière de lecture pour les cache DRAM : assure que toutes les données lues après la fin de DCR_BARRIER sont plus récentes que la date à laquelle DCR_BARRIER a été commencée.
DCM_BARRIER (Dram Cache Memory Barrier) : barrière de lecture et d'écriture pour les caches DRAM, équivaut indifféremment à :
soit DCW_BARRIER suivit de DCR_BARRIER,
soit DCR_BARRIER suivit de DCW_BARRIER.
Comme DCW_BARRIER et DCR_BARRIER fonctionnent toutes deux en chassant les données précédentes du cache DRAM, et à moins que le cache DRAM soit asymétrique dans sa gestion des lectures et des écritures, on aura en général :
DCW_BARRIER = DCR_BARRIER = DCM_BARRIER
Certaines architectures de cache DRAM peuvent être telles qu'il soit possible de réduire les séquences DCW_BARRIER, DCR_BARRIER et DCM_BARRIER, et donc de réduire leur temps d'exécution, si l'effet de ces barrières ne s'applique qu'à une plage d'adresses spécifiée en paramètre.
Si par exemple la plage d'adresses est spécifiée par son adresse de départ et son adresse de fin, alors on peut avoir les variantes de séquence d'accès BARRIER suivantes :
DCW_BARRIER (start_addr, end_addr) assure que toute les écritures faites avant le commencement de DCW_BARRIER (start_addr, end_addr) dans la plage d'adresse {start_addr : end_addr} sont effectives à la fin de DCW BARRIER (start addr, end addr). DCR_BARRIER (start_addr, end_addr) assure que toute les valeurs lues dans la plage d'adresses {start_addr : end_addr} après la fin de DCR_BARRIER (start_addr, end_addr) sont plus récentes que la date à laquelle DCR_BARRIER (start_addr, end_addr) a été commencée.
DCM_BARRIER (start_addr, end_addr) équivaux indifféremment à :
soit DCW_BARRIER (start_addr, end_addr) suivit de DCR_BARRIER (start_addr, end_addr) ,
soit DCR_BARRIER(start_addr, end_addr) suivit de
DCW_BARRIER(start_addr, end_addr) .
Application aux mémoires non-volatiles
Une mémoire non-volatile, dépourvu de processeur PIM, peut néanmoins avoir une interface lui permettant d'utiliser tous les aspects de l'invention, notamment ceux permettant :
- de pousser les écritures en attente hors du cache
DRAM,
- de vérifier que les écritures sont effectives dans la mémoire PIM.
Détermination des caractéristiques du cache DRAM
Les suites d'adresses à utiliser dans l'invention dépendent des caractéristiques du cache DRAM.
Obtenir la documentation
Il est nettement plus facile d'obtenir du fabricant de HCPU une documentation sur le cache DRAM, que de lui demander de modifier son HCPU.
Analyser le comportement du cache DRAM
Si des informations sur les caches DRAM présents dans le HCPU ne sont pas disponibles, il est possible d'analyser le trafic généré par un contrôleur mémoire DRAM d'un processeur HCPU.
Ce genre d'analyse est couramment réalisé entre autre par les fabricants de DRAM et de cartes mémoires DIMMs, notamment pour mettre au point leur produits et vérifier leur conformité, mais aussi par les fabricants d'ordinateurs utilisant des processeurs HCPU, pour la mise au point de leurs systèmes. Il existe des systèmes d'analyse, comme par exemple ceux de la société Tektronix, capable d'analyser le trafic d'un contrôleur DRAM d'un processeur HCPU.
En exécutant un programme conçu à cette intention sur le HCPU, et en utilisant un outil d'analyse de trafic comme ceux de la société Tektronix, il peut être possible de déterminer notamment les paramètres suivants du cache DRAM :
- la taille maximale d'une entrée du cache DRAM,
- 1 ' associativité du cache DRAM,
- le nombre d'entrée du cache DRAM,
- la politique de remplacement.
Analyse du cache DRAM via 1 ' interface
L'interface peut comprendre des moyens matériels pour enregistrer les N dernières transactions arrivées, ou du moins ou une partie suffisante de leurs caractéristiques, cet enregistrement étant accessible via l'interface elle-même.
La présence de ces moyens d'enregistrement, permet aux personnes en charge de développer le logiciel d'interface, de se passer de l'usage de moyen d'analyse externes, moyens qui sont assez onéreux.
Il est même possible de concevoir un logiciel d'interface capable, dans de nombreux cas, de déterminer automatiquement, sans moyen d'analyse externe, les caractéristiques du cache DRAM, et ainsi d'automatiser la création des séquences d'accès DCR_BARRIER, DCW_BARR1ER et DCM_BARRIER.
Considération vis à vis des Banks des circuits DRAM
Une mémoire DRAM est organisée en banc, page et colonnes .
Par soucis de simplicité, la description de l'invention n'a pas pris en compte la présence de banc : une DRAM étant organisée en banc, page et mot mémoires. Fondamentalement la présence de bancs dans une DRAM permet d'avoir plusieurs pages ouvertes (une page ouverte par banc au maximum) .
Aussi l'homme de l'art comprendra aisément que l'invention exposée ici n'est pas modifiée par la présence de bancs .

Claims

REVENDICATIONS
1. Système de calcul comprenant :
un dispositif de calcul (102) ayant un ou plusieurs cœurs de traitement (108) sous commande d'instructions et un contrôleur mémoire (112) , le contrôleur mémoire comprenant une mémoire cache (114) ; et
un circuit mémoire (104) couplé au contrôleur mémoire (112) par l'intermédiaire d'un bus de données (106A) et d'un bus d'adresses (106B) , le circuit mémoire (104) étant adapté à avoir un premier emplacement mémoire de m bits accessible par une pluralité de premières adresses fournies sur le bus d'adresses (106B) , le dispositif de calcul (102) étant configuré pour sélectionner, pour chaque opération mémoire accédant au premier emplacement mémoire de m bits, une adresse parmi la pluralité de premières adresses.
2. Système de calcul selon la revendication 1, dans lequel le premier emplacement mémoire de m bits est accessible par une pluralité P de premières adresses, le dispositif de calcul (102) étant configuré pour utiliser une première des adresses pour accéder au premier emplacement mémoire pendant une Nième et un (N+P) ième opérations d'accès au premier emplacement mémoire.
3. Système de calcul selon la revendication 1 ou 2, dans lequel chaque adresse de la pluralité de premières adresses comprend une première valeur de n bits et une seconde valeur de p bits, le dispositif de calcul (102) étant configuré pour effectuer une opération d'écriture de données d'écriture vers les m bits du premier emplacement mémoire en réalisant une opération de lecture du premier emplacement mémoire en utilisant l'une des premières adresses ayant une première valeur à n bits sélectionnée et une seconde valeur à p bits générée en fonction des données d'écriture.
4. Système de calcul selon la revendication 3, dans lequel le circuit mémoire (104) est adapté, en réponse à la réception d'une opération de lecture vers le premier emplacement mémoire utilisant l'une parmi des premières adresses, à écrire la deuxième valeur à p bits de l'adresse dans le premier emplacement mémoire .
5. Système de calcul selon la revendication 3 ou 4, dans lequel p et m sont des entiers positifs et m est égal ou supérieur à p.
6. Système de calcul selon l'une quelconque des revendications 1 à 5, dans lequel le circuit mémoire (104) est adapté à avoir un deuxième emplacement mémoire accessible par une pluralité de deuxièmes adresses fournies sur le bus d'adresses (106B) .
7. Système de calcul selon la revendication 6, dans lequel les premier et deuxième emplacements mémoire font partis d'une première plage d'emplacements mémoire (304) du circuit mémoire (104), la première plage d'emplacements mémoire étant sélectionnée par une fenêtre d'adresses glissante (305), dans lesquels les emplacements mémoire de la première plage d' emplacements mémoire sont adressables :
par des adresses correspondantes dans une première plage d'adresses (R0) comprenant une de la première pluralité d'adresses et une de la deuxième pluralité d'adresses ; et
par des adresses correspondantes dans une deuxième plage d'adresses (RI) comprenant un autre de la première pluralité d'adresses et une autre de la deuxième pluralité d'adresses ;
le circuit mémoire (104) comprenant un circuit de conversion d'adresses (122) adapté à convertir des adresses dans les première et deuxième plages d'adresses (R0, RI) vers des adresses correspondantes dans la fenêtre d'adresses glissante (305) .
8. Système de calcul selon la revendication 7, dans lequel le circuit de conversion d'adresses (122) comprend au moins un registre (124) programmable pour définir l'emplacement de la fenêtre d'adresses glissante (305).
9. Système de calcul selon la revendication 8, dans lequel ledit au moins un registre (124) du circuit de conversion d'adresses (122) est programmable pour définir l'emplacement et la taille de la fenêtre d'adresses glissante (305).
10. Système de calcul selon l'une quelconque des revendications 1 à 9, dans lequel le contrôleur mémoire (112) est adapté à effectuer une opération d'évacuation de cache, l'opération d'évacuation de cache comprenant une ou plusieurs séquences d'instructions d'accès mémoire réalisées par le contrôleur mémoire ayant comme résultat que :
tout ou partie des transactions d'écriture de mémoire cache stockées dans la mémoire cache (114) du contrôleur mémoire (112) est écrit vers le circuit mémoire (104) ; ou
tout ou partie des données de lecture stockées dans la mémoire cache (114) du contrôleur mémoire (112) est évacué de la mémoire cache, les données de lecture comprenant des données lues à partir du circuit mémoire avant l'opération d'évacuation de cache ; ou
tout ou partie des transactions d'écriture de mémoire cache stockées dans la mémoire cache (114) du contrôleur mémoire est écrit vers le circuit mémoire (104) et tout ou partie des données de lecture stockées dans la mémoire cache (114) du contrôleur mémoire (112) est évacué de la mémoire cache.
11. Système de calcul selon la revendication 10, dans lequel le circuit mémoire (104) comprend en outre un processeur auxiliaire (118), et dans lequel la séquence d'instructions d' accès mémoire comprend uniquement des instructions d' accès de registre pour accéder à un ou plusieurs registres de commande du circuit mémoire (104) pour commander le processeur auxiliaire (118) .
12. Système de calcul selon la revendication 10 ou 11, dans lequel le circuit mémoire (104) comprend un circuit de surveillance (126) , accessible par le dispositif de calcul (102) , et adapté à enregistrer des transactions d'accès mémoire effectuées dans le circuit mémoire (104), le dispositif de calcul (102) étant configuré pour générer lesdites une ou plusieurs séquences d'instructions d'accès mémoire sur la base des transactions enregistrées par le circuit de surveillance (126) .
13. Système de calcul selon la revendication 6, dans lequel le circuit mémoire (104) comprend en outre un processeur auxiliaire (118), les premier et deuxième emplacements mémoire étant des registres de commande du processeur auxiliaire.
14. Système de calcul selon la revendication 13, dans lequel le dispositif de calcul (102) est configuré pour générer des commandes d'un premier type et des commandes d'un deuxième type, le circuit mémoire (104) étant adapté à modifier l'ordre des commandes reçues du dispositif de calcul (102) de telle sorte que, pour un premier groupe de commandes du deuxième type généré par le dispositif de calcul (102) entre des première et deuxième commandes du premier type, l'ordre des première et deuxième commandes du premier type par rapport au groupe de commandes du deuxième type est respecté.
15. Système de calcul selon la revendication 14, dans lequel le circuit mémoire (104) est adapté à modifier l'ordre des commandes sur la base d'une valeur d'ordre associée à au moins chaque commande du premier type, la valeur d'ordre de chaque commande étant incluse :
dans l'adresse du destinataire de la commande ; ou dans la commande elle-même ; ou
partiellement dans l'adresse du destinataire de la commande et partiellement dans la commande elle-même.
16. Système de calcul selon l'une quelconque des revendications 1 à 15, dans lequel le dispositif de calcul (102) comprend en outre une mémoire cache CPU (110) configurable par des instructions de gestion de cache, la mémoire cache (114) du contrôleur mémoire n'étant pas configurable par des instructions de gestion de cache.
17. Système de calcul selon l'une quelconque des revendications 1 à 16, dans lequel le circuit mémoire (104) comprend une matrice mémoire non volatile.
18. Procédé d'accès à un circuit mémoire (104) couplé à un contrôleur mémoire (112) d'un dispositif de calcul (102) par l'intermédiaire d'un bus de données (106A) et d'un bus d'adresses (106B) , le dispositif de calcul (102) ayant un ou plusieurs cœurs de traitement (108) et le contrôleur mémoire comprenant une mémoire (114) cache, le procédé comprenant : sélectionner, par le dispositif de calcul, pour chaque opération mémoire accédant à un premier emplacement de mémoire de m bits du circuit mémoire (104), une adresse parmi une pluralité de premières adresses, le premier emplacement mémoire de m bits étant accessible par chacune de la pluralité des premières adresses fournies sur le bus d'adresses (106B) .
PCT/FR2017/052368 2016-09-08 2017-09-06 Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue WO2018046850A1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019513044A JP2019531546A (ja) 2016-09-08 2017-09-06 高度dramメモリコントローラの内部キャッシュをバイパスするための方法および装置
US16/331,429 US11494308B2 (en) 2016-09-08 2017-09-06 Methods and devices for bypassing the internal cache of an advanced DRAM memory controller
CN201780062063.1A CN109952567B (zh) 2016-09-08 2017-09-06 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置
KR1020197009869A KR102398616B1 (ko) 2016-09-08 2017-09-06 진보한 dram 메모리 컨트롤러의 내부 캐시를 우회시키기 위한 방법 및 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1658373A FR3055715B1 (fr) 2016-09-08 2016-09-08 Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue
FR1658373 2016-09-08

Publications (1)

Publication Number Publication Date
WO2018046850A1 true WO2018046850A1 (fr) 2018-03-15

Family

ID=57750074

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2017/052368 WO2018046850A1 (fr) 2016-09-08 2017-09-06 Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue

Country Status (6)

Country Link
US (1) US11494308B2 (fr)
JP (1) JP2019531546A (fr)
KR (1) KR102398616B1 (fr)
CN (1) CN109952567B (fr)
FR (1) FR3055715B1 (fr)
WO (1) WO2018046850A1 (fr)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7218556B2 (ja) * 2018-12-06 2023-02-07 富士通株式会社 演算処理装置および演算処理装置の制御方法
US11048636B2 (en) * 2019-07-31 2021-06-29 Micron Technology, Inc. Cache with set associativity having data defined cache sets
US11481255B2 (en) * 2019-09-10 2022-10-25 International Business Machines Corporation Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator
US11403111B2 (en) 2020-07-17 2022-08-02 Micron Technology, Inc. Reconfigurable processing-in-memory logic using look-up tables
US11355170B1 (en) 2020-12-16 2022-06-07 Micron Technology, Inc. Reconfigurable processing-in-memory logic
US11868657B2 (en) * 2021-02-08 2024-01-09 Samsung Electronics Co., Ltd. Memory controller, method of operating the memory controller, and electronic device including the memory controller
US11354134B1 (en) * 2021-03-25 2022-06-07 Micron Technology, Inc. Processing-in-memory implementations of parsing strings against context-free grammars
US11921634B2 (en) * 2021-12-28 2024-03-05 Advanced Micro Devices, Inc. Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
US5459856A (en) * 1991-12-06 1995-10-17 Hitachi, Ltd. System having independent access paths for permitting independent access from the host and storage device to respective cache memories
EP0886216A1 (fr) * 1997-06-06 1998-12-23 Texas Instruments Incorporated Microprocesseur comprenant des moyens de stockage de données non-antémémorisables
WO2000055734A1 (fr) * 1999-03-17 2000-09-21 Rambus, Inc. Procede et controleur de memoire a blocs dependants
FR3032814A1 (fr) 2015-02-18 2016-08-19 Upmem

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6734867B1 (en) * 2000-06-28 2004-05-11 Micron Technology, Inc. Cache invalidation method and apparatus for a graphics processing system
US6983354B2 (en) * 2002-05-24 2006-01-03 Micron Technology, Inc. Memory device sequencer and method supporting multiple memory device clock speeds
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
JP3938177B2 (ja) * 2004-10-29 2007-06-27 キヤノン株式会社 データ処理装置及びデータ処理装置におけるメモリ割り当て方法
US8253751B2 (en) * 2005-06-30 2012-08-28 Intel Corporation Memory controller interface for micro-tiled memory access
JP2007249314A (ja) * 2006-03-14 2007-09-27 Yaskawa Electric Corp 高速データ処理装置
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8386723B2 (en) * 2009-02-11 2013-02-26 Sandisk Il Ltd. System and method of host request mapping
JP5526697B2 (ja) * 2009-10-14 2014-06-18 ソニー株式会社 ストレージ装置およびメモリシステム
US10020036B2 (en) * 2012-12-12 2018-07-10 Nvidia Corporation Address bit remapping scheme to reduce access granularity of DRAM accesses
US9075557B2 (en) * 2013-05-15 2015-07-07 SanDisk Technologies, Inc. Virtual channel for data transfers between devices
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
WO2015047266A1 (fr) * 2013-09-26 2015-04-02 Intel Corporation Ouvertures de stockage par blocs vers une mémoire persistante
US9690928B2 (en) * 2014-10-25 2017-06-27 Mcafee, Inc. Computing platform security methods and apparatus
EP3018587B1 (fr) * 2014-11-05 2018-08-29 Renesas Electronics Europe GmbH Unité d'accès mémoire

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459856A (en) * 1991-12-06 1995-10-17 Hitachi, Ltd. System having independent access paths for permitting independent access from the host and storage device to respective cache memories
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
EP0886216A1 (fr) * 1997-06-06 1998-12-23 Texas Instruments Incorporated Microprocesseur comprenant des moyens de stockage de données non-antémémorisables
WO2000055734A1 (fr) * 1999-03-17 2000-09-21 Rambus, Inc. Procede et controleur de memoire a blocs dependants
FR3032814A1 (fr) 2015-02-18 2016-08-19 Upmem

Also Published As

Publication number Publication date
KR20190067171A (ko) 2019-06-14
CN109952567A (zh) 2019-06-28
FR3055715B1 (fr) 2018-10-05
CN109952567B (zh) 2023-08-22
US20210349826A1 (en) 2021-11-11
JP2019531546A (ja) 2019-10-31
US11494308B2 (en) 2022-11-08
KR102398616B1 (ko) 2022-05-16
FR3055715A1 (fr) 2018-03-09

Similar Documents

Publication Publication Date Title
WO2018046850A1 (fr) Methodes et dispositifs pour contourner le cache interne d&#39;un controleur memoire dram evolue
US20190243558A1 (en) Two-level system main memory
JP2018133086A5 (fr)
US10203878B2 (en) Near memory accelerator
US20150032964A1 (en) Handling virtual memory address synonyms in a multi-level cache hierarchy structure
US20130138867A1 (en) Storing Multi-Stream Non-Linear Access Patterns in a Flash Based File-System
FR2624994A1 (fr) Systeme de commande de registre intermediaire de traduction
EP2638476A1 (fr) Procédé et appareil permettant d&#39;accéder à des données d&#39;une machine virtuelle
US9710283B2 (en) System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting
EP3182292B1 (fr) Procédé de prédiction d&#39;une donnée a précharger dans une mémoire cache
EP3005126B1 (fr) Systèmes de stockage et mémoire à alias
EP3293637A1 (fr) Gestion d&#39;index dans une mémoire flash
WO2022140157A1 (fr) Caches reconfigurables par processus
US20130339612A1 (en) Apparatus and method for testing a cache memory
EP1607878A1 (fr) Procédé et programme d&#39;ordinateur de traitement d&#39;une adresse virtuelle pour la programmation d&#39;un contrôleur de DMA et système sur puce associé
FR2805368A1 (fr) Systeme et procede utilisant l&#39;acces speculatif a l&#39;antememoire pour des performances ameliorees
EP2666092B1 (fr) Systeme multi-coeurs et procede de coherence de donnees
FR2600441A1 (fr) Unite de gestion de memoire
FR2609195A1 (fr) Procede de gestion d&#39;antememoires associees a des processeurs dans une architecture multiprocesseur a bus unique et systeme de traitement de donnees fonctionnant suivant ce procede
US20230342049A1 (en) Reading a master boot record for a namespace using a regular read operation
US11809341B2 (en) System, device and method for indirect addressing
EP2652624B1 (fr) Procede, programme d&#39;ordinateur et dispositif de gestion d&#39;acces memoire dans une architecture multiprocesseurs de type numa
FR2919401A1 (fr) Procede de test des chemins de donnees dans un circuit electronique
US20130339607A1 (en) Reducing store operation busy times
FR3103590A1 (fr) Procédé de construction d’une signature caractéristique des accès, par un microprocesseur, à une mémoire

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17771492

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2019513044

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20197009869

Country of ref document: KR

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 17771492

Country of ref document: EP

Kind code of ref document: A1