Ascenium Inc

États‑Unis d’Amérique

Retour au propriétaire

1-63 de 63 pour Ascenium Inc Trier par
Recheche Texte
Affiner par
Juridiction
        États-Unis 36
        International 27
Date
2026 (AACJ) 1
2025 10
2024 18
2023 16
2022 14
Voir plus
Classe IPC
G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions 39
G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire 33
G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique 23
G06F 8/41 - Compilation 18
G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption 16
Voir plus
Statut
En Instance 26
Enregistré / En vigueur 37
Résultats pour  brevets

1.

GENERATING ITERATION TRANSFER INFORMATION FOR CODE EXECUTION WITH A COMPUTE SLICE MICROARCHITECTURE

      
Numéro d'application 19446865
Statut En instance
Date de dépôt 2026-01-12
Date de la première publication 2026-05-21
Propriétaire Ascenium, Inc. (USA)
Inventeur(s)
  • Fredriksson, Hans Olle Viktor
  • Bastiansen, Tore Jahn
  • Brynestad, Ove
  • Harboe, Øyvind

Abrégé

A processor core is accessed. The core is configured to execute instructions associated with an instruction set architecture (ISA). The core comprises a plurality of compute slices, a plurality of barrier register files, and a control unit. Each compute slice includes at least one arithmetic logic unit (ALU), a local register file, and is coupled to a successor compute slice and a predecessor compute slice by a barrier register file. Code associated with the ISA is evaluated, where the code includes a first loop. The evaluating includes generating iteration transfer information associated with the first loop. Each slice task within a plurality of slice tasks associated with the first loop is distributed to a compute slice. The processor core executes the plurality of slice tasks. Data forwarding between successive compute slices is based on the plurality of barrier register files and the iteration transfer information.

Classes IPC  ?

  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]

2.

MEMORY DEPENDENCE PREDICTION IN A PARALLEL ARCHITECTURE WITH COMPUTE SLICES

      
Numéro d'application 19235822
Statut En instance
Date de dépôt 2025-06-12
Date de la première publication 2025-12-18
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Fredriksson, Hans Olle Viktor

Abrégé

A processing unit is accessed that includes a plurality of compute slices, a control unit, and a global aliasing table (GAT). Each compute slice within the plurality of compute slices includes at least one execution unit, is known to a compiler, and is coupled to a successor compute slice and a predecessor compute slice. A first compute slice executes a load instruction. The load instruction is associated with a target address. The load instruction is predicted that it will alias with a previous store instruction. The previous store instruction executes on a previous compute slice among the plurality of compute slices. The predicting is based on the GAT. The load instruction is stalled until the previous store instruction completes execution on the previous compute slice. The load instruction is allowed to execute. The predicting includes searching, in the GAT, for an entry which includes the load instruction.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/355 - Adressage indexé

3.

GLOBAL MEMORY DISAMBIGUATION FOR A PARALLEL ARCHITECTURE WITH COMPUTE SLICES

      
Numéro d'application 19197924
Statut En instance
Date de dépôt 2025-05-02
Date de la première publication 2025-11-06
Propriétaire Ascenium, Inc. (USA)
Inventeur(s)
  • Harboe, Øyvind
  • Taylor, Jacob John Vorland
  • Knatten, Anders Schau

Abrégé

Techniques for checking memory operations are disclosed. A processing unit is accessed, comprising compute slices, control unit, local memory disambiguation units (LMDUs), and a global MDU (GMDU). Each slice includes an execution unit and is coupled to successor and predecessor slices. Each slice is coupled to an LMDU. Each LMDU is coupled to the GMDU. A first slice executes a first slice task. The task includes a load instruction and address. The slice issues the load to an LMDU, saving load information in a memory operation table (MOT). For a not fully serviced load instruction, the LMDU sends the load information to the GMDU, storing load information in a global MOT (GMOT). The GMOT detects address aliasing between the load address and a previously issued address saved in the GMOT. The GMOT forwards memory information from previously issued memory instructions to the MOT to satisfy the load instruction.

Classes IPC  ?

  • G06F 3/06 - Entrée numérique à partir de, ou sortie numérique vers des supports d'enregistrement

4.

LOCAL MEMORY DISAMBIGUATION FOR A PARALLEL ARCHITECTURE WITH COMPUTE SLICES

      
Numéro d'application 19093385
Statut En instance
Date de dépôt 2025-03-28
Date de la première publication 2025-10-02
Propriétaire Ascenium, Inc. (USA)
Inventeur(s)
  • Taylor, Jacob John Vorland
  • Knatten, Anders Schau

Abrégé

A processing unit is accessed, comprising compute slices, a control unit, local memory disambiguation units (LMDUs), and memory system. Each slice includes an execution unit and is coupled to successor and predecessor slices. Each slice is coupled to an LMDU. The control unit distributes a first slice task to a first slice coupled to a first LMDU. The first slice executes the first task. The task includes a load instruction including a load address. The first slice issues the load instruction to the first LMDU. The issuing saves load information in a memory operation table (MOT) within the LMDU. The LMDU detects, based on the MOT, address aliasing between the load address and a store address of a previous store instruction. The MOT forwards store information from the previous store instruction. The store information satisfies one or more bytes of data required for the load instruction.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/46 - Dispositions pour la multiprogrammation

5.

COMPILER GENERATED HYPERBLOCKS IN A PARALLEL ARCHITECTURE WITH COMPUTE SLICES

      
Numéro d'application 19053495
Statut En instance
Date de dépôt 2025-02-14
Date de la première publication 2025-08-21
Propriétaire Ascenium, Inc. (USA)
Inventeur(s)
  • Aaser, Peter
  • Fredriksson, Hans Olle Viktor

Abrégé

Techniques for parallel generation of blocks using a compiler are disclosed. A processing unit comprising compute slices, barrier register sets, a control unit, and a memory system is accessed. Each compute slice includes an execution unit and is coupled to other compute slices by a barrier register set. A compiler evaluates a compiled program that includes basic blocks, based on a control flow graph. A first hyperblock is created from at least two basic blocks. One or more branch instructions are replaced with skip instructions that direct instruction execution between basic blocks in the hyperblock. A first slice task is allocated to a first compute slice. A second slice task is allotted based on branch prediction. Pointers to the first compute slice and the second compute slice are initialized. The compiled program is executed, beginning with the first compute slice.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 8/41 - Compilation
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions

6.

SEMANTIC ORDERING FOR PARALLEL ARCHITECTURE WITH COMPUTE SLICES

      
Numéro d'application 18826260
Statut En instance
Date de dépôt 2024-09-06
Date de la première publication 2025-03-13
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Taylor, Jacob John Vorland

Abrégé

Techniques for managing compute slice tasks are disclosed. A processing unit comprising compute slices, load-store units (LSUs), a control unit, and a memory system is accessed. The compute slices are coupled. Each compute slice includes an LSU which is coupled to a predecessor LSU and a successor LSU. A compiled program is executed as the control unit distributes slice tasks to the compute slices for execution. A slice task, which includes a load instruction, is distributed to a current compute slice. The current compute slice can execute the slice task speculatively. A previously executed store instruction is committed to memory by a predecessor LSU. Address aliasing is checked between an address associated with the previously executed store instruction and the load address associated with the load instruction. The slice task running on the current compute slice can be cancelled when aliasing is detected.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire

7.

SEMANTIC ORDERING FOR PARALLEL ARCHITECTURE WITH COMPUTE SLICES

      
Numéro d'application US2024045453
Numéro de publication 2025/054375
Statut Délivré - en vigueur
Date de dépôt 2024-09-06
Date de publication 2025-03-13
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Taylor, Jacob John, Vorland

Abrégé

Techniques for managing compute slice tasks are disclosed. A processing unit comprising compute slices, load-store units (LSUs), a control unit, and a memory system is accessed. The compute slices are coupled. Each compute slice includes an LSU which is coupled to a predecessor LSU and a successor LSU. A compiled program is executed as the control unit distributes slice tasks to the compute slices for execution. A slice task, which includes a load instruction, is distributed to a current compute slice. The current compute slice can execute the slice task speculatively. A previously executed store instruction is committed to memory by a predecessor LSU. Address aliasing is checked between an address associated with the previously executed store instruction and the load address associated with the load instruction. The slice task running on the current compute slice can be cancelled when aliasing is detected.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 12/0893 - Mémoires cache caractérisées par leur organisation ou leur structure

8.

PARALLEL PROCESSING ARCHITECTURE WITH BLOCK MOVE BACKPRESSURE

      
Numéro d'application US2024044587
Numéro de publication 2025/049849
Statut Délivré - en vigueur
Date de dépôt 2024-08-30
Date de publication 2025-03-06
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for monitoring block moves in an array of compute elements and applying backpressure are disclosed. An array of compute elements is accessed. The array of compute elements is coupled to at least one data cache. The data cache provides memory' storage for the array of compute elements. Control for the array of compute elements is enabled by a stream of wide control words generated by the compiler. A load address and a store address comprising memory block move addresses are generated. The memory block move addresses point to memory' storage locations in the at least one data cache. Load buffers are coupled to the array of compute elements. The load buffers are located adjacent to at least one edge of the array of compute elements. A memory block move is executed using at least one of the load buffers, based on the memory block move addresses.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique

9.

PARALLEL PROCESSING ARCHITECTURE WITH BLOCK MOVE SUPPORT

      
Numéro d'application US2024039674
Numéro de publication 2025/024736
Statut Délivré - en vigueur
Date de dépôt 2024-07-26
Date de publication 2025-01-30
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing are disclosed. An array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements. The array of compute elements is coupled to at least one data cache. The data cache provides memory storage for the array. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. A load address and a store address are generated. The load and the store addresses comprise memory block move addresses. The memory block move addresses point to memory storage locations in the data cache. A memory block move is executed, based on the memory block move addresses. The data for the memory block move is transferred outside of the array.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 15/173 - Communication entre processeurs utilisant un réseau d'interconnexion, p. ex. matriciel, de réarrangement, pyramidal, en étoile ou ramifié
  • G06F 12/084 - Systèmes de mémoire cache multi-utilisateurs, multiprocesseurs ou multitraitement avec mémoire cache partagée
  • G06F 13/16 - Gestion de demandes d'interconnexion ou de transfert pour l'accès au bus de mémoire

10.

PARALLEL ARCHITECTURE WITH COMPILER-SCHEDULED COMPUTE SLICES

      
Numéro d'application 18769478
Statut En instance
Date de dépôt 2024-07-11
Date de la première publication 2025-01-16
Propriétaire Ascenium, Inc. (USA)
Inventeur(s)
  • Bastiansen, Tore Jahn
  • Aaser, Peter
  • Bø, Trond Hellem

Abrégé

Techniques for task processing based on compiler-scheduled compute slices are disclosed. A processing unit comprising compute slices, barrier register sets, a control unit, and a memory system is accessed. Each compute slice includes an execution unit and is coupled to other compute slices by a barrier register set. A first slice task is distributed to a first compute slice. A second slice task is allotted to a second compute slice, based on a branch prediction logic. The second compute slice is coupled to the first by a first barrier register set. Pointers are initialized. A compiled program is executed, beginning at the first compute slice. The second slice task can be executed in parallel while a branch decision is being made. If the branch decision determines that the second slice task is not the next sequential slice task, results from the second compute slice are discarded.

Classes IPC  ?

  • G06F 9/52 - Synchronisation de programmesExclusion mutuelle, p. ex. au moyen de sémaphores

11.

PARALLEL ARCHITECTURE WITH COMPILER-SCHEDULED COMPUTE SLICES

      
Numéro d'application US2024037495
Numéro de publication 2025/015117
Statut Délivré - en vigueur
Date de dépôt 2024-07-11
Date de publication 2025-01-16
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s)
  • Bastiansen, Tore, Jahn
  • Aaser, Peter
  • Bø, Trond, Hellem

Abrégé

Techniques for task processing based on compiler-scheduled compute slices are disclosed. A processing unit comprising compute slices, barrier register sets, a control unit, and a memory system is accessed. Each compute slice includes an execution unit and is coupled to other compute slices by a barrier register set. A first slice task is distributed to a first compute slice. A second slice task is allotted to a second compute slice, based on a branch prediction logic. The second compute slice is coupled to the first by a first barrier register set. Pointers are initialized. A compiled program is executed, beginning at the first compute slice. The second slice task can be executed in parallel while a branch decision is being made. If the branch decision determines that the second slice task is not the next sequential slice task, results from the second compute slice are discarded.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/52 - Synchronisation de programmesExclusion mutuelle, p. ex. au moyen de sémaphores

12.

PARALLEL PROCESSING ARCHITECTURE WITH BLOCK MOVE BACKPRESSURE

      
Numéro d'application 18820425
Statut En instance
Date de dépôt 2024-08-30
Date de la première publication 2024-12-19
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for monitoring block moves in an array of compute elements and applying backpressure are disclosed. An array of compute elements is accessed. The array of compute elements is coupled to at least one data cache. The data cache provides memory storage for the array of compute elements. Control for the array of compute elements is enabled by a stream of wide control words generated by the compiler. A load address and a store address comprising memory block move addresses are generated. The memory block move addresses point to memory storage locations in the at least one data cache. Load buffers are coupled to the array of compute elements. The load buffers are located adjacent to at least one edge of the array of compute elements. A memory block move is executed using at least one of the load buffers, based on the memory block move addresses.

Classes IPC  ?

  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]

13.

Parallel processing architecture with block move support

      
Numéro d'application 18785026
Numéro de brevet 12743377
Statut Délivré - en vigueur
Date de dépôt 2024-07-26
Date de la première publication 2024-11-21
Date d'octroi 2026-09-22
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing are disclosed. An array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements. The array of compute elements is coupled to at least one data cache. The data cache provides memory storage for the array. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. A load address and a store address are generated. The load and the store addresses comprise memory block move addresses. The memory block move addresses point to memory storage locations in the data cache. A memory block move is executed, based on the memory block move addresses. The data for the memory block move is transferred outside of the array.

Classes IPC  ?

  • G06F 12/08 - Adressage ou affectationRéadressage dans des systèmes de mémoires hiérarchiques, p. ex. des systèmes de mémoire virtuelle
  • G06F 9/54 - Communication interprogramme
  • G06F 12/084 - Systèmes de mémoire cache multi-utilisateurs, multiprocesseurs ou multitraitement avec mémoire cache partagée

14.

PARALLEL PROCESSING HAZARD MITIGATION AVOIDANCE

      
Numéro d'application US2024025310
Numéro de publication 2024/220740
Statut Délivré - en vigueur
Date de dépôt 2024-04-19
Date de publication 2024-10-24
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on hazard mitigation avoidance are disclosed. An array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Memory access operation hazard mitigation is enabled. The hazard mitigation is enabled by a control word tag. The control word tag supports memory access precedence information and is provided by the compiler at compile time. A hazardless memory access operation is executed. The hazardless memory access operation is determined by the compiler, and the hazardless memory access operation is designated by a unique set of precedence information contained in the tag. The tag is modified during runtime by hardware.

Classes IPC  ?

  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]
  • G06F 8/41 - Compilation
  • G06F 12/0846 - Mémoire cache avec matrices multiples d’étiquettes ou de données accessibles simultanément
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions

15.

PARALLEL PROCESSING ARCHITECTURE FOR BRANCH PATH SUPPRESSION

      
Numéro d'application US2024016978
Numéro de publication 2024/178275
Statut Délivré - en vigueur
Date de dépôt 2024-02-23
Date de publication 2024-08-29
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for a parallel processing architecture for branch path suppression are disclosed. An array of compute elements is accessed. Each element is known to a compiler and is coupled to its neighboring elements. Control for the elements is provided on a cycle- by -cycle basis. Control is enabled by a stream of wide control words generated by the compiler. The control includes a branch. A plurality of compute elements is mapped. The mapping distributes parallelized operations to the compute elements. The mapping is determined by the compiler. A column of compute elements is enabled to perform vertical data access suppression and a row of compute elements is enabled to perform horizontal data access suppression. Both sides of the branch are executed. The executing includes making a branch decision. Branch operation data accesses are suppressed, based on the branch decision and an invalid indication. The invalid indication is propagated among compute elements.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 8/41 - Compilation

16.

PARALLEL PROCESSING HAZARD MITIGATION AVOIDANCE

      
Numéro d'application 18640044
Statut En instance
Date de dépôt 2024-04-19
Date de la première publication 2024-08-08
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on hazard mitigation avoidance are disclosed. An array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Memory access operation hazard mitigation is enabled. The hazard mitigation is enabled by a control word tag. The control word tag supports memory access precedence information and is provided by the compiler at compile time. A hazardless memory access operation is executed. The hazardless memory access operation is determined by the compiler, and the hazardless memory access operation is designated by a unique set of precedence information contained in the tag. The tag is modified during runtime by hardware.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 12/0895 - Mémoires cache caractérisées par leur organisation ou leur structure de parties de mémoires cache, p. ex. répertoire ou matrice d’étiquettes

17.

PARALLEL PROCESSING WITH HAZARD DETECTION AND STORE PROBES

      
Numéro d'application US2024013611
Numéro de publication 2024/163521
Statut Délivré - en vigueur
Date de dépôt 2024-01-30
Date de publication 2024-08-08
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing using hazard detection and store probes are disclosed. An array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Data to be stored by the array of compute elements is managed. The data to be stored is targeted to a data cache coupled to the array of compute elements. The managing includes detecting and mitigating memory hazards. Pending data cache accesses are probed for hazards. The examining comprises a store probe. Store data is committed to the data cache. The committing is based on a result of the store probe.

Classes IPC  ?

  • G06F 3/06 - Entrée numérique à partir de, ou sortie numérique vers des supports d'enregistrement
  • G06F 12/0802 - Adressage d’un niveau de mémoire dans lequel l’accès aux données ou aux blocs de données désirés nécessite des moyens d’adressage associatif, p. ex. mémoires cache

18.

Parallel processing architecture for branch path suppression

      
Numéro d'application 18585156
Numéro de brevet 12748638
Statut Délivré - en vigueur
Date de dépôt 2024-02-23
Date de la première publication 2024-06-13
Date d'octroi 2026-09-29
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for a parallel processing architecture for branch path suppression are disclosed. An array of compute elements is accessed. Each element is known to a compiler and is coupled to its neighboring elements. Control for the elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. The control includes a branch. A plurality of compute elements is mapped. The mapping distributes parallelized operations to the compute elements. The mapping is determined by the compiler. A column of compute elements is enabled to perform vertical data access suppression and a row of compute elements is enabled to perform horizontal data access suppression. Both sides of the branch are executed. The executing includes making a branch decision. Branch operation data accesses are suppressed, based on the branch decision and an invalid indication. The invalid indication is propagated among compute elements.

Classes IPC  ?

  • G06F 9/52 - Synchronisation de programmesExclusion mutuelle, p. ex. au moyen de sémaphores

19.

PARALLEL PROCESSING WITH SWITCH BLOCK EXECUTION

      
Numéro d'application US2023037172
Numéro de publication 2024/107390
Statut Délivré - en vigueur
Date de dépôt 2023-11-13
Date de publication 2024-05-23
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on parallel processing with switch block execution are disclosed. An array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. A plurality of compute elements is initialized within the array with a switch statement. The switch statement is mapped into a primitive operation in each element of the plurality of compute elements. The initializing is based on a control word from the stream of control words. Each of the primitive operations is executed in an architectural cycle. A result is returned for the switch statement. The returning is determined by a decision variable.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 8/41 - Compilation

20.

PARALLEL PROCESSING WITH HAZARD DETECTION AND STORE PROBES

      
Numéro d'application 18426438
Statut En instance
Date de dépôt 2024-01-30
Date de la première publication 2024-05-23
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing using hazard detection and store probes are disclosed. An array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Data to be stored by the array of compute elements is managed. The data to be stored is targeted to a data cache coupled to the array of compute elements. The managing includes detecting and mitigating memory hazards. Pending data cache accesses are probed for hazards. The examining comprises a store probe. Store data is committed to the data cache. The committing is based on a result of the store probe.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]

21.

PARALLEL PROCESSING USING HAZARD DETECTION AND MITIGATION

      
Numéro d'application US2023036949
Numéro de publication 2024/107364
Statut Délivré - en vigueur
Date de dépôt 2023-11-07
Date de publication 2024-05-23
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing using hazard detection and mitigation are disclosed. An array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Memory access operations are tagged with precedence information. The tagging is contained in the control words. The tagging is provided by the compiler at compile time. Memory access operations are monitored. The monitoring is based on the precedence information and a number of architectural cycles of the cycle-by- cycle basis. The tagging is augmented at run time, based on the monitoring. Memory access data is held before promotion, based on the monitoring.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 8/41 - Compilation

22.

PARALLEL PROCESSING WITH SWITCH BLOCK EXECUTION

      
Numéro d'application 18388875
Statut En instance
Date de dépôt 2023-11-13
Date de la première publication 2024-03-07
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on parallel processing with switch block execution are disclosed. An array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. A plurality of compute elements is initialized within the array with a switch statement. The switch statement is mapped into a primitive operation in each element of the plurality of compute elements. The initializing is based on a control word from the stream of control words. Each of the primitive operations is executed in an architectural cycle. A result is returned for the switch statement. The returning is determined by a decision variable.

Classes IPC  ?

  • G06F 12/0842 - Systèmes de mémoire cache multi-utilisateurs, multiprocesseurs ou multitraitement pour multitraitement ou multitâche
  • G06F 12/0831 - Protocoles de cohérence de mémoire cache à l’aide d’un schéma de bus, p. ex. avec moyen de contrôle ou de surveillance

23.

PARALLEL PROCESSING ARCHITECTURE WITH MEMORY BLOCK TRANSFERS

      
Numéro d'application US2023031460
Numéro de publication 2024/049859
Statut Délivré - en vigueur
Date de dépôt 2023-08-30
Date de publication 2024-03-07
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a parallel processing architecture with memory block transfers are disclosed. An array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. Control for the array is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. A control word from the stream of control words includes a source address, a target address, a block size, and a stride. Memory block transfer control logic is used. The memory block transfer logic is implemented outside of the array of compute elements. A memory block transfer is executed. The memory block transfer is initiated by a control word from the stream of wide control words. Data for the memory block transfer is moved independently from the array of compute elements.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 8/41 - Compilation
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique

24.

Parallel processing using hazard detection and mitigation

      
Numéro d'application 18387695
Numéro de brevet 12493554
Statut Délivré - en vigueur
Date de dépôt 2023-11-07
Date de la première publication 2024-02-29
Date d'octroi 2025-12-09
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing using hazard detection and mitigation are disclosed. An array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Memory access operations are tagged with precedence information. The tagging is contained in the control words. The tagging is provided by the compiler at compile time. Memory access operations are monitored. The monitoring is based on the precedence information and a number of architectural cycles of the cycle-by-cycle basis. The tagging is augmented at run time, based on the monitoring. Memory access data is held before promotion, based on the monitoring.

Classes IPC  ?

  • G06F 12/0846 - Mémoire cache avec matrices multiples d’étiquettes ou de données accessibles simultanément
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire

25.

PARALLEL PROCESSING ARCHITECTURE WITH BIN PACKING

      
Numéro d'application US2023030769
Numéro de publication 2024/044150
Statut Délivré - en vigueur
Date de dépôt 2023-08-22
Date de publication 2024-02-29
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on a parallel processing architecture with bin packing are disclosed. An array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. A plurality of compressed control words is generated by the compiler. The plurality of control words enables compute element operation and compute element memory access. The compressed control words are operationally sequenced. The compressed control words are linked by the compiler. Linking information is contained in at least one field of each of the compressed control words. The compressed control words are loaded into a control word cache coupled to the array of compute elements. The compressed control words are loaded into the control word cache in an operationally non-sequenced order. The plurality of compressed control words is ordered into an operationally sequenced execution order, based on the linking information.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 8/41 - Compilation
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 5/01 - Procédés ou dispositions pour la conversion de données, sans modification de l'ordre ou du contenu des données maniées pour le décalage, p. ex. la justification, le changement d'échelle, la normalisation

26.

PARALLEL PROCESSING ARCHITECTURE WITH DUAL LOAD BUFFERS

      
Numéro d'application US2023029057
Numéro de publication 2024/030351
Statut Délivré - en vigueur
Date de dépôt 2023-07-31
Date de publication 2024-02-08
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on a parallel processing architecture with dual load buffers are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. A first data cache is coupled to the array. The first data cache enables loading data to a first portion of the array. The first data cache supports an address space. A second data cache is coupled to the array. The second data cache enables loading data to a second portion of the array. The second data cache supports the address space. Instructions are executed within the array. Instructions executed within the first portion of the array of compute elements use data loaded from the first data cache, and instructions executed within the second portion of the array of compute elements use data loaded from the second data cache.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique

27.

PARALLEL PROCESSING ARCHITECTURE WITH BIN PACKING

      
Numéro d'application 18236442
Statut En instance
Date de dépôt 2023-08-22
Date de la première publication 2024-01-25
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on a parallel processing architecture with bin packing are disclosed. An array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. A plurality of compressed control words is generated by the compiler. The plurality of control words enables compute element operation and compute element memory access. The compressed control words are operationally sequenced. The compressed control words are linked by the compiler. Linking information is contained in at least one field of each of the compressed control words. The compressed control words are loaded into a control word cache coupled to the array of compute elements. The compressed control words are loaded into the control word cache in an operationally non-sequenced order. The plurality of compressed control words is ordered into an operationally sequenced execution order, based on the linking information.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 8/41 - Compilation
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique

28.

PARALLEL PROCESSING ARCHITECTURE WITH COUNTDOWN TAGGING

      
Numéro d'application US2023027313
Numéro de publication 2024/015318
Statut Délivré - en vigueur
Date de dépôt 2023-07-11
Date de publication 2024-01-18
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on a parallel processing architecture with countdown tagging are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. A load operation is tagged with a countdown tag. Tagging is performed by the compiler, and the load operation is targeted to a memory system associated with the array of compute elements. The countdown tag comprises a time value. The time value is decremented as the load operation is being performed. The time value that is decremented is based on an architectural cycle. Countdown tag status is monitored by a control unit. The monitoring occurs as the load operation is performed. A load status is generated by the control unit, based on the monitoring. The load status allows compute element operation.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire

29.

PARALLEL PROCESSING ARCHITECTURE WITH SPLIT CONTROL WORD CACHES

      
Numéro d'application US2023026518
Numéro de publication 2024/006401
Statut Délivré - en vigueur
Date de dépôt 2023-06-29
Date de publication 2024-01-04
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for a parallel processing architecture with split control word caches are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. A first control word cache is coupled to the array. The first control word cache enables loading control words to a first array portion. A second control word cache is coupled to the array. The second control word cache enables loading control words to a second array portion. The control words are split between the first and the second control word caches. The splitting is based on the constituency of the first and the second array portions. Instructions are executed within the array. Instructions executed within the first array portion use control words loaded from the first cache. Instructions executed within the second array portion use control words loaded from the second cache.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 12/0802 - Adressage d’un niveau de mémoire dans lequel l’accès aux données ou aux blocs de données désirés nécessite des moyens d’adressage associatif, p. ex. mémoires cache

30.

PARALLEL PROCESSING ARCHITECTURE WITH MEMORY BLOCK TRANSFERS

      
Numéro d'application 18239770
Statut En instance
Date de dépôt 2023-08-30
Date de la première publication 2023-12-21
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a parallel processing architecture with memory block transfers are disclosed. An array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. Control for the array is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. A control word from the stream of control words includes a source address, a target address, a block size, and a stride. Memory block transfer control logic is used. The memory block transfer logic is implemented outside of the array of compute elements. A memory block transfer is executed. The memory block transfer is initiated by a control word from the stream of wide control words. Data for the memory block transfer is moved independently from the array of compute elements.

Classes IPC  ?

  • G06F 9/345 - Adressage de l'opérande d'instruction ou du résultat ou accès à l'opérande d'instruction ou au résultat d'opérandes ou de résultats multiples
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/54 - Communication interprogramme

31.

PARALLEL PROCESSING ARCHITECTURE WITH DUAL LOAD BUFFERS

      
Numéro d'application 18228001
Statut En instance
Date de dépôt 2023-07-31
Date de la première publication 2023-11-23
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on a parallel processing architecture with dual load buffers are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. A first data cache is coupled to the array. The first data cache enables loading data to a first portion of the array. The first data cache supports an address space. A second data cache is coupled to the array. The second data cache enables loading data to a second portion of the array. The second data cache supports the address space. Instructions are executed within the array. Instructions executed within the first portion of the array of compute elements use data loaded from the first data cache, and instructions executed within the second portion of the array of compute elements use data loaded from the second data cache.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 12/0842 - Systèmes de mémoire cache multi-utilisateurs, multiprocesseurs ou multitraitement pour multitraitement ou multitâche

32.

PARALLEL PROCESSING OF MULTIPLE LOOPS WITH LOADS AND STORES

      
Numéro d'application US2023021618
Numéro de publication 2023/220099
Statut Délivré - en vigueur
Date de dépôt 2023-05-10
Date de publication 2023-11-16
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing of multiple loops with loads and stores are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Memory access operations are tagged with precedence information. The tagging is contained in the control words and is implemented for loop operations. The tagging is provided by the compiler at compile time. Control word data is loaded for multiple, independent loops into the compute elements. The multiple, independent loops are executed. Memory is accessed based on the precedence information. The memory access includes loads and/or stores for data relating to the independent loops.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 8/41 - Compilation

33.

PARALLEL PROCESSING ARCHITECTURE WITH COUNTDOWN TAGGING

      
Numéro d'application 18220331
Statut En instance
Date de dépôt 2023-07-11
Date de la première publication 2023-11-02
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing based on a parallel processing architecture with countdown tagging are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. A load operation is tagged with a countdown tag. Tagging is performed by the compiler, and the load operation is targeted to a memory system associated with the array of compute elements. The countdown tag comprises a time value. The time value is decremented as the load operation is being performed. The time value that is decremented is based on an architectural cycle. Countdown tag status is monitored by a control unit. The monitoring occurs as the load operation is performed. A load status is generated by the control unit, based on the monitoring. The load status allows compute element operation.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 11/30 - Surveillance du fonctionnement
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique

34.

PARALLEL PROCESSING ARCHITECTURE WITH SPLIT CONTROL WORD CACHES

      
Numéro d'application 18215866
Statut En instance
Date de dépôt 2023-06-29
Date de la première publication 2023-10-26
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for a parallel processing architecture with split control word caches are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. A first control word cache is coupled to the array. The first control word cache enables loading control words to a first array portion. A second control word cache is coupled to the array. The second control word cache enables loading control words to a second array portion. The control words are split between the first and the second control word caches. The splitting is based on the constituency of the first and the second array portions. Instructions are executed within the array. Instructions executed within the first array portion use control words loaded from the first cache. Instructions executed within the second array portion use control words loaded from the second cache.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire

35.

AUTONOMOUS COMPUTE ELEMENT OPERATION USING BUFFERS

      
Numéro d'application US2023015735
Numéro de publication 2023/183279
Statut Délivré - en vigueur
Date de dépôt 2023-03-21
Date de publication 2023-09-28
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on autonomous compute element operation using buffers are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control is provided for the array of compute elements on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. An autonomous operation buffer is loaded with at least two operations contained in control words. The autonomous operation buffer is integrated in a compute element. A compute element operation counter coupled to the autonomous operation buffer is set. The compute element operation counter is integrated in the compute element. The at least two operations are executed using the autonomous operation buffer and the compute element operation counter. The operations complete autonomously from direct compiler control.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 8/41 - Compilation
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 7/57 - Unités arithmétiques et logiques [UAL], c.-à-d. dispositions ou dispositifs pour accomplir plusieurs des opérations couvertes par les groupes ou pour accomplir des opérations logiques

36.

HIGHLY PARALLEL PROCESSING ARCHITECTURE WITH OUT-OF-ORDER RESOLUTION

      
Numéro d'application US2023014863
Numéro de publication 2023/172660
Statut Délivré - en vigueur
Date de dépôt 2023-03-09
Date de publication 2023-09-14
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a highly parallel processing architecture with out-of-order resolution are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. The array of compute elements is coupled to supporting logic and to memory, which, along with the array of compute elements, comprise compute hardware. A set of directions is provided to the hardware, through a control word generated by the compiler, for compute element operation. The set of directions is augmented with data access ordering information. The data access ordering is performed by the hardware. A compiled task is executed on the array of compute elements, based on the set of directions that was augmented.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 8/41 - Compilation

37.

PARALLEL PROCESSING OF MULTIPLE LOOPS WITH LOADS AND STORES

      
Numéro d'application 18195407
Statut En instance
Date de dépôt 2023-05-10
Date de la première publication 2023-09-07
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for parallel processing of multiple loops with loads and stores are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array. Control for the compute elements is provided on a cycle-by-cycle basis. Control is enabled by a stream of wide control words generated by the compiler. Memory access operations are tagged with precedence information. The tagging is contained in the control words and is implemented for loop operations. The tagging is provided by the compiler at compile time. Control word data is loaded for multiple, independent loops into the compute elements. The multiple, independent loops are executed. Memory is accessed based on the precedence information. The memory access includes loads and/or stores for data relating to the independent loops.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions

38.

Highly parallel processing architecture with out-of-order resolution

      
Numéro d'application 18119315
Numéro de brevet 12705092
Statut Délivré - en vigueur
Date de dépôt 2023-03-09
Date de la première publication 2023-08-31
Date d'octroi 2026-08-11
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a highly parallel processing architecture with out-of-order resolution are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. The array of compute elements is coupled to supporting logic and to memory, which, along with the array of compute elements, comprise compute hardware. A set of directions is provided to the hardware, through a control word generated by the compiler, for compute element operation. The set of directions is augmented with data access ordering information. The data access ordering is performed by the hardware. A compiled task is executed on the array of compute elements, based on the set of directions that was augmented.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 8/41 - Compilation

39.

AUTONOMOUS COMPUTE ELEMENT OPERATION USING BUFFERS

      
Numéro d'application 18124115
Statut En instance
Date de dépôt 2023-03-21
Date de la première publication 2023-07-13
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on autonomous compute element operation using buffers are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control is provided for the array of compute elements on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. An autonomous operation buffer is loaded with at least two operations contained in control words. The autonomous operation buffer is integrated in a compute element. A compute element operation counter coupled to the autonomous operation buffer is set. The compute element operation counter is integrated in the compute element. The at least two operations are executed using the autonomous operation buffer and the compute element operation counter. The operations complete autonomously from direct compiler control.

Classes IPC  ?

40.

COMPUTE ELEMENT PROCESSING USING CONTROL WORD TEMPLATES

      
Numéro d'application US2022053912
Numéro de publication 2023/129491
Statut Délivré - en vigueur
Date de dépôt 2022-12-23
Date de publication 2023-07-06
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s)
  • Hristodorescu, Ionut
  • Foley, Peter

Abrégé

Techniques for task processing based on compute element processing using control word templates are disclosed. One or more control word templates are generated for use in a two-dimensional array of compute elements. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Each control word template designates a topological set of compute elements from the array of compute elements. The one or more control word templates are customized with a specific set of compute element operations. The one or more control word templates that were customized are stored. The specific set of compute element operations is executed on the topological set of compute elements. The one or more control word templates that were stored are reused. The one or more control word templates that were stored are modified and executed using compute elements.

Classes IPC  ?

  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 8/41 - Compilation
  • G06F 15/173 - Communication entre processeurs utilisant un réseau d'interconnexion, p. ex. matriciel, de réarrangement, pyramidal, en étoile ou ramifié
  • G06F 7/57 - Unités arithmétiques et logiques [UAL], c.-à-d. dispositions ou dispositifs pour accomplir plusieurs des opérations couvertes par les groupes ou pour accomplir des opérations logiques

41.

COMPUTE ELEMENT PROCESSING USING CONTROL WORD TEMPLATES

      
Numéro d'application 18087865
Statut En instance
Date de dépôt 2022-12-23
Date de la première publication 2023-04-27
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s)
  • Hristodorescu, Ionut
  • Foley, Peter

Abrégé

Techniques for task processing based on compute element processing using control word templates are disclosed. One or more control word templates are generated for use in a two-dimensional array of compute elements. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Each control word template designates a topological set of compute elements from the array of compute elements. The one or more control word templates are customized with a specific set of compute element operations. The one or more control word templates that were customized are stored. The specific set of compute element operations is executed on the topological set of compute elements. The one or more control word templates that were stored are reused. The one or more control word templates that were stored are modified and executed using compute elements.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 40/186 - Gabarits

42.

LOAD LATENCY AMELIORATION USING BUNCH BUFFERS

      
Numéro d'application US2022046210
Numéro de publication 2023/064230
Statut Délivré - en vigueur
Date de dépôt 2022-10-11
Date de publication 2023-04-20
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on load latency amelioration using bunch buffers are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. Sets of control word bits are loaded into buffers. Each buffer is associated with and coupled to a unique compute element within the array of compute elements. The sets of control word bits provide operational control for the compute element with which it is associated. Operations are executed within the array of elements. The operations are based on a selected set of control word bits which comprise a control word bunch.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 15/78 - Architectures de calculateurs universels à programmes enregistrés comprenant une seule unité centrale
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]
  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption

43.

PARALLEL PROCESSING ARCHITECTURE USING DISTRIBUTED REGISTER FILES

      
Numéro d'application US2022033510
Numéro de publication 2023/018477
Statut Délivré - en vigueur
Date de dépôt 2022-06-15
Date de publication 2023-02-16
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a parallel processing architecture using distributed register files are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. The array of compute elements is controlled on a cycle-by-cycle basis. The controlling is enabled by a stream of wide control words generated by the compiler. Virtual registers are mapped to a plurality of physical register files distributed among one or more of the compute elements. Virtual registers are represented by the compiler. The mapping is performed by the compiler. A broadcast write operation is enabled to two or more of the physical register files. Operations contained in the control words are executed. Operations are enabled by at least one of the distributed physical register files. Implementation in separate compute elements enables parallel operation processing.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions

44.

PARALLEL PROCESSING ARCHITECTURE FOR ATOMIC OPERATIONS

      
Numéro d'application US2022039234
Numéro de publication 2023/014759
Statut Délivré - en vigueur
Date de dépôt 2022-08-03
Date de publication 2023-02-09
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing in a parallel processing architecture for atomic operations are disclosed. A two-dimensional array of compute elements is accessed, where each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. At least one of the control words involves an operation requiring at least one additional operation. A bit of the control word is set, where the bit indicates a multicycle operation. The control word is executed, on at least one compute element within the array of compute elements, based on the bit. The multicycle operation comprises a read-modify -write operation.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 8/41 - Compilation
  • G06F 13/40 - Structure du bus
  • G06F 13/16 - Gestion de demandes d'interconnexion ou de transfert pour l'accès au bus de mémoire

45.

Load latency amelioration using bunch buffers

      
Numéro d'application 17963226
Numéro de brevet 12730668
Statut Délivré - en vigueur
Date de dépôt 2022-10-11
Date de la première publication 2023-02-02
Date d'octroi 2026-09-08
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on load latency amelioration using bunch buffers are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. Sets of control word bits are loaded into buffers. Each buffer is associated with and coupled to a unique compute element within the array of compute elements. The sets of control word bits provide operational control for the compute element with which it is associated. Operations are executed within the array of elements. The operations are based on a selected set of control word bits which comprise a control word bunch.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/54 - Communication interprogramme

46.

PARALLEL PROCESSING ARCHITECTURE WITH DISTRIBUTED REGISTER FILES

      
Numéro d'application US2022030800
Numéro de publication 2022/251272
Statut Délivré - en vigueur
Date de dépôt 2022-05-25
Date de publication 2022-12-01
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a parallel processing architecture with distributed register files are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. The array of compute elements is controlled on a cycle-by-cycle basis. The controlling is enabled by a stream of wide, variable length, control words generated by the compiler. Virtual registers are mapped to a plurality of physical register files distributed among one or more of the compute elements. Virtual registers are represented by the compiler. The mapping is performed by the compiler. A broadcast write operation is enabled to two or more of the physical register files. Operations contained in the control words are executed. Operations are enabled by at least one of the distributed physical register files. Implementation in separate compute elements enables parallel operation processing.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 8/41 - Compilation

47.

PARALLEL PROCESSING ARCHITECTURE FOR ATOMIC OPERATIONS

      
Numéro d'application 17879827
Statut En instance
Date de dépôt 2022-08-03
Date de la première publication 2022-11-24
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing in a parallel processing architecture for atomic operations are disclosed. A two-dimensional array of compute elements is accessed, where each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide control words generated by the compiler. At least one of the control words involves an operation requiring at least one additional operation. A bit of the control word is set, where the bit indicates a multicycle operation. The control word is executed, on at least one compute element within the array of compute elements, based on the bit. The multicycle operation comprises a read-modify-write operation.

Classes IPC  ?

  • G06F 9/52 - Synchronisation de programmesExclusion mutuelle, p. ex. au moyen de sémaphores
  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption

48.

PARALLEL PROCESSING ARCHITECTURE USING DISTRIBUTED REGISTER FILES

      
Numéro d'application 17840689
Statut En instance
Date de dépôt 2022-06-15
Date de la première publication 2022-09-29
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a parallel processing architecture using distributed register files are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. The array of compute elements is controlled on a cycle-by-cycle basis. The controlling is enabled by a stream of wide control words generated by the compiler. Virtual registers are mapped to a plurality of physical register files distributed among one or more of the compute elements. Virtual registers are represented by the compiler. The mapping is performed by the compiler. A broadcast write operation is enabled to two or more of the physical register files. Operations contained in the control words are executed. Operations are enabled by at least one of the distributed physical register files. Implementation in separate compute elements enables parallel operation processing.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption

49.

PARALLEL PROCESSING ARCHITECTURE USING SPECULATIVE ENCODING

      
Numéro d'application US2022021838
Numéro de publication 2022/204450
Statut Délivré - en vigueur
Date de dépôt 2022-03-25
Date de publication 2022-09-29
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for program execution in a parallel processing architecture using speculative encoding are disclosed. A two-dimensional array of compute elements is accessed, where each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide, variable length, control words generated by the compiler. Two or more operations are coalesced into a control word, where the control word includes a branch decision and operations associated with the branch decision. The coalesced control word includes speculatively encoded operations for at least two possible branch paths. The at least two possible branch paths generate independent side effects. Operations associated with the branch decision that are not indicated by the branch decision are suppressed.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 7/575 - Unités arithmétiques et logiques de base, c.-à-d. dispositifs pouvant être sélectionnés pour accomplir soit l'addition, soit la soustraction, soit une parmi plusieurs opérations logiques, utilisant, au moins partiellement, les mêmes circuits
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 8/41 - Compilation

50.

Parallel processing architecture with distributed register files

      
Numéro d'application 17752898
Numéro de brevet 12578991
Statut Délivré - en vigueur
Date de dépôt 2022-05-25
Date de la première publication 2022-09-15
Date d'octroi 2026-03-17
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing based on a parallel processing architecture with distributed register files are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. The array of compute elements is controlled on a cycle-by-cycle basis. The controlling is enabled by a stream of wide, variable length, control words generated by the compiler. Virtual registers are mapped to a plurality of physical register files distributed among one or more of the compute elements. Virtual registers are represented by the compiler. The mapping is performed by the compiler. A broadcast write operation is enabled to two or more of the physical register files. Operations contained in the control words are executed. Operations are enabled by at least one of the distributed physical register files. Implementation in separate compute elements enables parallel operation processing.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire

51.

PARALLEL PROCESSING ARCHITECTURE USING SPECULATIVE ENCODING

      
Numéro d'application 17704056
Statut En instance
Date de dépôt 2022-03-25
Date de la première publication 2022-07-07
Propriétaire Ascenium, Inc. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for program execution in a parallel processing architecture using speculative encoding are disclosed. A two-dimensional array of compute elements is accessed, where each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide, variable length, control words generated by the compiler. Two or more operations are coalesced into a control word, where the control word includes a branch decision and operations associated with the branch decision. The coalesced control word includes speculatively encoded operations for at least two possible branch paths. The at least two possible branch paths generate independent side effects. Operations associated with the branch decision that are not indicated by the branch decision are suppressed.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions

52.

HIGHLY PARALLEL PROCESSING ARCHITECTURE USING DUAL BRANCH EXECUTION

      
Numéro d'application US2021063441
Numéro de publication 2022/132858
Statut Délivré - en vigueur
Date de dépôt 2021-12-15
Date de publication 2022-06-23
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing in a highly parallel processing architecture using dual branch execution are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide, variable length, control words generated by the compiler. The control includes a branch. Two sides of the branch in the array are executed while waiting for a branch decision to be acted upon by control logic. The branch decision is based on computation results in the array. Data produced by a taken branch path is promoted. Results from a side of the branch not indicated by the branch decision are ignored or invalidated.

Classes IPC  ?

  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 8/41 - Compilation
  • G06F 15/78 - Architectures de calculateurs universels à programmes enregistrés comprenant une seule unité centrale

53.

HIGHLY PARALLEL PROCESSING ARCHITECTURE WITH COMPILER

      
Numéro d'application US2021059304
Numéro de publication 2022/104176
Statut Délivré - en vigueur
Date de dépôt 2021-11-15
Date de publication 2022-05-19
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s)
  • Harboe, Øyvind
  • Bastiansen, Tore
  • Foley, Peter

Abrégé

Techniques for task processing using a highly parallel processing architecture with a compiler are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. A set of directions is provided to the hardware, through a control word generated by the compiler, for compute element operation and memory access precedence. The set of directions enables the hardware to properly sequence compute element results. The set of directions controls data movement for the array of compute elements. A compiled task is executed on the array of compute elements, based on the set of directions. The compute element results are generated in parallel in the array, and the compute element results are ordered independently from control word arrival at each compute element.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions

54.

PARALLEL PROCESSING ARCHITECTURE WITH BACKGROUND LOADS

      
Numéro d'application US2021054889
Numéro de publication 2022/081784
Statut Délivré - en vigueur
Date de dépôt 2021-10-14
Date de publication 2022-04-21
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing using a parallel processing architecture with background loads are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. Operation of the array is paused. The pausing occurs while a memory system continues operation. A bus coupling the array is repurposed. The repurposing couples one or more compute elements in the array to the memory system. A memory system operation is enabled during the pausing. Data is transferred from the memory system to the array of compute elements using the bus that was repurposed. The data from the memory system is transferred to scratchpad memory in the one or more compute elements within the two- dimensional array. The scratchpad memory provides operand storage. The data is tagged. The tagging guides the transferring to a particular compute element.

Classes IPC  ?

  • G06Q 10/06 - Ressources, gestion de tâches, des ressources humaines ou de projetsPlanification d’entreprise ou d’organisationModélisation d’entreprise ou d’organisation
  • G06Q 10/10 - BureautiqueGestion du temps

55.

HIGHLY PARALLEL PROCESSING ARCHITECTURE USING DUAL BRANCH EXECUTION

      
Numéro d'application 17551276
Statut En instance
Date de dépôt 2021-12-15
Date de la première publication 2022-04-07
Propriétaire ASCENIUM, INC, (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing in a highly parallel processing architecture using dual branch execution are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide, variable length, control words generated by the compiler. The control includes a branch. Two sides of the branch in the array are executed while waiting for a branch decision to be acted upon by control logic. The branch decision is based on computation results in the array. Data produced by a taken branch path is promoted. Results from a side of the branch not indicated by the branch decision are ignored or invalidated.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 7/575 - Unités arithmétiques et logiques de base, c.-à-d. dispositifs pouvant être sélectionnés pour accomplir soit l'addition, soit la soustraction, soit une parmi plusieurs opérations logiques, utilisant, au moins partiellement, les mêmes circuits
  • G06N 3/04 - Architecture, p. ex. topologie d'interconnexion

56.

HIGHLY PARALLEL PROCESSING ARCHITECTURE WITH SHALLOW PIPELINE

      
Numéro d'application US2021048964
Numéro de publication 2022/055792
Statut Délivré - en vigueur
Date de dépôt 2021-09-03
Date de publication 2022-03-17
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing using a highly parallel processing architecture with a shallow pipeline are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide, variable length, microcode control words generated by the compiler. Relevant portions of the control word are stored within a cache associated with the array of compute elements. The control words are decompressed. The decompressing occurs cycle-by-cycle out of the cache over multiple cycles. A compiled task is executed on the array of compute elements, based on the decompressing. Simultaneous execution of two or more potential compiled task outcomes is provided.

Classes IPC  ?

  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/28 - Augmentation de la vitesse de fonctionnement, p. ex. en utilisant plusieurs dispositifs de microcommande fonctionnant en parallèle
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire

57.

PARALLEL PROCESSING ARCHITECTURE WITH BACKGROUND LOADS

      
Numéro d'application 17500990
Statut En instance
Date de dépôt 2021-10-14
Date de la première publication 2022-03-10
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing using a parallel processing architecture with background loads are disclosed. A two-dimensional array of compute elements is accessed. Each compute element is known to a compiler and is coupled to its neighboring compute elements. Operation of the array is paused. The pausing occurs while a memory system continues operation. A bus coupling the array is repurposed. The repurposing couples one or more compute elements in the array to the memory system. A memory system operation is enabled during the pausing. Data is transferred from the memory system to the array of compute elements using the bus that was repurposed. The data from the memory system is transferred to scratchpad memory in the one or more compute elements within the two-dimensional array. The scratchpad memory provides operand storage. The data is tagged. The tagging guides the transferring to a particular compute element.

Classes IPC  ?

  • G06F 13/16 - Gestion de demandes d'interconnexion ou de transfert pour l'accès au bus de mémoire
  • G06F 13/40 - Structure du bus

58.

HIGHLY PARALLEL PROCESSING ARCHITECTURE WITH COMPILER

      
Numéro d'application 17526003
Statut En instance
Date de dépôt 2021-11-15
Date de la première publication 2022-03-10
Propriétaire Ascenium, Inc. (USA)
Inventeur(s)
  • Harboe, Øyvind
  • Bastiansen, Tore
  • Foley, Peter

Abrégé

Techniques for task processing using a highly parallel processing architecture with a compiler are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. A set of directions is provided to the hardware, through a control word generated by the compiler, for compute element operation and memory access precedence. The set of directions enables the hardware to properly sequence compute element results. The set of directions controls data movement for the array of compute elements. A compiled task is executed on the array of compute elements, based on the set of directions. The compute element results are generated in parallel in the array, and the compute element results are ordered independently from control word arrival at each compute element.

Classes IPC  ?

  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]

59.

HIGHLY PARALLEL PROCESSING ARCHITECTURE WITH SHALLOW PIPELINE

      
Numéro d'application 17465949
Statut En instance
Date de dépôt 2021-09-03
Date de la première publication 2022-03-10
Propriétaire ASCENIUM, INC. (USA)
Inventeur(s) Foley, Peter

Abrégé

Techniques for task processing using a highly parallel processing architecture with a shallow pipeline are disclosed. A two-dimensional array of compute elements is accessed. Each compute element within the array of compute elements is known to a compiler and is coupled to its neighboring compute elements within the array of compute elements. Control for the array of compute elements is provided on a cycle-by-cycle basis. The control is enabled by a stream of wide, variable length, microcode control words generated by the compiler. Relevant portions of the control word are stored within a cache associated with the array of compute elements. The control words are decompressed. The decompressing occurs cycle-by-cycle out of the cache over multiple cycles. A compiled task is executed on the array of compute elements, based on the decompressing. Simultaneous execution of two or more potential compiled task outcomes is provided.

Classes IPC  ?

  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/48 - Lancement de programmes Commutation de programmes, p. ex. par interruption
  • G06F 15/80 - Architectures de calculateurs universels à programmes enregistrés comprenant un ensemble d'unités de traitement à commande commune, p. ex. plusieurs processeurs de données à instruction unique

60.

Method of placement and routing in a reconfiguration of a dynamically reconfigurable processor

      
Numéro d'application 13832005
Numéro de brevet 09633160
Statut Délivré - en vigueur
Date de dépôt 2013-03-15
Date de la première publication 2014-05-01
Date d'octroi 2017-04-25
Propriétaire
  • ASCENIUM HOLDING AS (Norvège)
  • ASCENIUM INC (USA)
Inventeur(s) Mykland, Robert Keith

Abrégé

A method and system are provided for deriving a resultant compiled software code with increased compatibility for placement and routing of a dynamically reconfigurable processor.

Classes IPC  ?

  • G06F 17/50 - Conception assistée par ordinateur

61.

Method and system adapted for converting software constructs into resources for implementation by a dynamically reconfigurable processor

      
Numéro d'application 13722831
Numéro de brevet 09304770
Statut Délivré - en vigueur
Date de dépôt 2012-12-20
Date de la première publication 2014-01-09
Date d'octroi 2016-04-05
Propriétaire
  • ASCENIUM HOLDING AS (Norvège)
  • ASCENIUM INC (USA)
Inventeur(s) Mykland, Robert Keith

Abrégé

A method and system are provided for deriving a resultant software code from an originating ordered list of instructions that does not include overlapping branch logic. The method may include deriving a plurality of unordered software constructs from a sequence of processor instructions; associating software constructs in accordance with an original logic of the sequence of processor instructions; determining and resolving memory precedence conflicts within the associated plurality of software constructs; resolving forward branch logic structures into conditional logic constructs; resolving back branch logic structures into loop logic constructs; and/or applying the plurality of unordered software constructs in a programming operation by a parallel execution logic circuitry. The resultant plurality of unordered software constructs may be converted into programming reconfigurable logic, computers or processors, and also by means of a computer network or an electronics communications network.

Classes IPC  ?

  • G06F 7/00 - Procédés ou dispositions pour le traitement de données en agissant sur l'ordre ou le contenu des données maniées
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/44 - Dispositions pour exécuter des programmes spécifiques

62.

System and method for performing a branch object conversion to program configurable logic circuitry

      
Numéro d'application 13493962
Numéro de brevet 09158544
Statut Délivré - en vigueur
Date de dépôt 2012-06-11
Date de la première publication 2013-06-06
Date d'octroi 2015-10-13
Propriétaire
  • ASCENIUM HOLDING AS (Norvège)
  • ASCENIUM INC (USA)
Inventeur(s) Mykland, Robert Keith

Abrégé

A method and system are provided for deriving a resultant software code from an originating ordered list of instructions that does not include overlapping branch logic. The method may include deriving a plurality of unordered software constructs from a sequence of processor instructions; associating software constructs in accordance with an original logic of the sequence of processor instructions; determining and resolving memory precedence conflicts within the associated plurality of software constructs; resolving forward branch logic structures into conditional logic constructs; resolving back branch logic structures into loop logic constructs; and/or applying the plurality of unordered software constructs in a programming operation by a parallel execution logic circuitry. The resultant plurality of unordered software constructs may be converted into programming reconfigurable logic, computers or processors, and also by means of a computer network or an electronics communications network.

Classes IPC  ?

  • G06F 9/50 - Allocation de ressources, p. ex. de l'unité centrale de traitement [UCT]
  • G06F 9/30 - Dispositions pour exécuter des instructions machines, p. ex. décodage d'instructions
  • G06F 9/38 - Exécution simultanée d'instructions, p. ex. pipeline ou lecture en mémoire
  • G06F 9/45 - Compilation ou interprétation de langages de programmation évolués

63.

Configurable circuit array

      
Numéro d'application 13301763
Numéro de brevet 10089277
Statut Délivré - en vigueur
Date de dépôt 2011-11-21
Date de la première publication 2012-12-27
Date d'octroi 2018-10-02
Propriétaire
  • ASCENIUM HOLDING AS (Norvège)
  • ASCENIUM INC (USA)
Inventeur(s) Mykland, Robert Keith

Abrégé

A method and system are provided for configurable computation and data processing. A logical processor includes an array of logic elements. The processor may be a combinatorial circuit that can be applied to modify computational aspects of an array of reconfigurable circuits. A memory stores a plurality of instructions, each instruction including an instruction-fetch data portion and an output data transfer data portion. One or more memory controllers are coupled to the memory and receive instructions and/or output data from the memory. A back buffer is coupled with the memory controller and receives instructions from the memory controller. The back buffer sequentially asserts each received instruction upon one or more memory controllers. The memory controllers transfer data received from the memory to a target, such as an array of reconfigurable logic circuits that are optionally coupled to the memory, the back buffer, and one or more additional memory controllers.

Classes IPC  ?

  • G06F 15/78 - Architectures de calculateurs universels à programmes enregistrés comprenant une seule unité centrale