SiFive, Inc.

United States of America

Back to Profile

1-100 of 199 for SiFive, Inc. Sort by
Query
Aggregations
IP Type
        Patent 189
        Trademark 10
Jurisdiction
        United States 145
        World 52
        Canada 1
        Europe 1
Date
New (last 4 weeks) 2
2025 October 3
2025 September 1
2025 August 3
2025 July 1
See more
IPC Class
G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode 56
G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead 40
G06F 12/0862 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch 13
G06F 30/327 - Logic synthesisBehaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist 12
G06F 12/0811 - Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies 10
See more
NICE Class
09 - Scientific and electric apparatus and instruments 10
42 - Scientific, technological and industrial services, research and design 5
41 - Education, entertainment, sporting and cultural services 4
35 - Advertising and business services 3
Status
Pending 65
Registered / In Force 134
  1     2        Next Page

1.

INTEGRATED CIRCUIT DESIGN WITH PROTECTION BASED ON PROTECTED DECLARATION AND ANNOTATION

      
Application Number 18646193
Status Pending
Filing Date 2024-04-25
First Publication Date 2025-10-30
Owner SiFive, Inc. (USA)
Inventor Koenig, John

Abstract

The present application relates to generating a design for an integrated circuit. The integrated circuit can include state elements that store data and a protection component, such as an encoder or decoder, that enables detection and, possibly correction, of errors in the stored data. The integrated circuit can be designed using an integrated circuit generator that implements a hardware description language (HDL). In the HDL, code for the integrated circuit can be defined. This code can indicate that the data forms an atomic data group to be processed together and can declare this data as being protected by a particular protection type (e.g., error correction codes). An annotation referring to the data protection can be included in an operation defined in the code. Based on the declaration and the annotation in the code, a data structure can be generated and can indicate that the protection component is to be implemented.

IPC Classes  ?

  • G06F 30/32 - Circuit design at the digital level
  • G06F 119/02 - Reliability analysis or reliability optimisationFailure analysis, e.g. worst case scenario performance, failure mode and effects analysis [FMEA]

2.

LOGGING GUEST PHYSICAL ADDRESS FOR MEMORY ACCESS FAULTS

      
Application Number 19261901
Status Pending
Filing Date 2025-07-07
First Publication Date 2025-10-30
Owner SiFive, Inc. (USA)
Inventor
  • Ingalls, John
  • Waterman, Andrew

Abstract

Systems and methods are disclosed for logging guest physical address for memory access faults. For example, a method for logging guest physical address includes receiving a first address translation request from a processor pipeline at a translation lookaside buffer for a first guest virtual address; identifying a hit with a fault condition corresponding to the first guest virtual address; responsive to the fault condition, invoking a single-stage page table walk with the first guest virtual address to obtain a first guest physical address; and storing the first guest physical address with the first guest virtual address in a data store, wherein the data store is separate from an entry in the translation lookaside buffer that includes a tag that includes the first guest virtual address and data that includes a physical address.

IPC Classes  ?

  • G06F 12/1009 - Address translation using page tables, e.g. page table structures
  • G06F 12/1027 - Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

3.

Window-based control for instruction issue in an out-of-order processor

      
Application Number 18742968
Grant Number 12436770
Status In Force
Filing Date 2024-06-13
First Publication Date 2025-10-07
Grant Date 2025-10-07
Owner SiFive, Inc. (USA)
Inventor
  • Cheng, I-Cheng
  • Wei, Chen
  • Huang, Kuan-Lin
  • Wu, Yueh-Chi

Abstract

A window-based constraint on issue order can be applied where a shared resource (e.g., a transfer buffer for load data) is allocated out-of-order by a first unit in a processor (e.g., a load/store unit) and freed in-order by a second unit in the processor (e.g., a unit that moves data out of the transfer buffer). The first unit can have a first issue queue and issue logic that imposes a constraint that an instruction that allocates the shared resource is only ready to issue if it is within or younger than a clearance window defined within the first issue queue, where the clearance window is defined to allow at least some out-of-order issue of instructions that allocate the shared resource.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

4.

TRANSFER BUFFER BETWEEN A SCALAR PIPELINE AND VECTOR PIPELINE

      
Application Number 19199751
Status Pending
Filing Date 2025-05-23
First Publication Date 2025-09-04
Owner SiFive, Inc. (USA)
Inventor
  • Kravitz, David
  • Hanselman, Andrew
  • Burgess, Bradley Gene

Abstract

Systems and methods are disclosed for transferring an operand between a vector pipeline and a scalar pipeline. For example, some methods may include transferring an operand from a scalar pipeline to a scalar-to-vector buffer responsive to the scalar pipeline executing a first micro-op, wherein the scalar-to-vector buffer includes an entry having a width equal to a width of a scalar register of the scalar pipeline and a data store configured to store an indication mapping the entry to the first micro-op; updating the data store to include the indication mapping the entry to the first micro-op; identifying, by the vector pipeline in response to execution of a second micro-op and in dependence on the indication mapping the entry to the first micro-op, the entry storing the operand; and transferring the operand from the entry in the scalar-to-vector buffer to the vector pipeline responsive to the vector pipeline executing the second micro-op.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/355 - Indexed addressing

5.

USING RENAMED REGISTERS TO SUPPORT MULTIPLE VSET{I}VL{I} INSTRUCTIONS

      
Application Number 19044204
Status Pending
Filing Date 2025-02-03
First Publication Date 2025-08-07
Owner SiFive, Inc. (USA)
Inventor Smith, Joshua

Abstract

A method for renaming architectural register, such as control and status register (CSR), is disclosed. The method includes decoding an instruction for updating CSR, updating the CSR based on a respective instruction of the one or more instructions, allocating a unique tag to the instruction in pipeline, and writing the tag into a mapping table for renaming the CSR. The tag can identify the CSR included in the instruction or the updated values of the CSR. The tag can be associated with a unique value. Moreover, the method can employ a First In, First Out (FIFO) queuing technique and virtual bits.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

6.

BUNDLING AND DYNAMIC ALLOCATION OF REGISTER BLOCKS FOR VECTOR INSTRUCTIONS

      
Application Number 19044169
Status Pending
Filing Date 2025-02-03
First Publication Date 2025-08-07
Owner SiFive, Inc. (USA)
Inventor
  • Burgess, Bradley Gene
  • Kravitz, David
  • Solomatnikov, Alexandre

Abstract

Apparatus and methods which bundle micro-operations with respect to a vector instruction, dynamically allocate register blocks for a vector instruction, and track the registers using valid bits. A method includes decoding, by a decoder, a vector instruction having a length multiplier of at least two into a number of micro-operations less than the length multiplier, allocating, by an issue queue, an issue queue entry to each of the number of micro-operations and executing, by the issue queue with execution units, each of the number of micro-operations a number of times from the issue queue entry to collectively match the length multiplier.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

7.

TRACKING OF STORE OPERATIONS

      
Application Number 19044233
Status Pending
Filing Date 2025-02-03
First Publication Date 2025-08-07
Owner SiFive, Inc. (USA)
Inventor
  • Wu, Yueh Chi
  • Rabefarihy, Yohann

Abstract

Apparatus and methods for tracking sub-micro-operations and groups thereof are described. An integrated circuit includes a load store unit configured to receive store micro-operations cracked from a vector store instruction. The load store unit is configured to unroll multiple store sub-micro-operations from each of the store micro-operations. The load store unit includes an issue status vector to track issuance of each sub-micro-operation, an unroll status vector to track unrolling of each sub-micro-operation associated with a group of sub-micro-operations, and a replay status vector to track a replayability of sub-micro-operations associated with the group of sub-micro-operations.

IPC Classes  ?

8.

Integrated Circuit Design Verification with Object Model

      
Application Number 18408556
Status Pending
Filing Date 2024-01-09
First Publication Date 2025-07-10
Owner SiFive, Inc. (USA)
Inventor
  • Chang, Jacob
  • Cook, Henry
  • Rajendran, Sandeep

Abstract

Test verification code generation may be automated. Automating the generation of the test verification code may include generating an integrated circuit design for an integrated circuit that includes the object model and generating the verification code based on the object model. The object model is used by a parser to generate a verification code. The object model may include field values including a protection parameter field and a sequence field. The protection parameter field may include information that identifies node(s) that are associated with an intended protected region in the integrated circuit design and indicates characteristics of an encoding scheme applied in the intended protected region. The sequence field may include information representing a list of signals that can report an error. The verification code may be configured to inject the error during simulation of the integrated circuit design to verify that the system correctly responds to the error.

IPC Classes  ?

  • G06F 30/367 - Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods

9.

ADDRESS BOUNDARY FUNCTIONS FOR PHYSICAL AND LOCALIZED ADDRESSES

      
Application Number 19039761
Status Pending
Filing Date 2025-01-28
First Publication Date 2025-06-12
Owner SiFive, Inc. (USA)
Inventor
  • Liberty, Dean A.
  • Adler, Robert P.
  • Cook, Henry
  • Sensaoui, Abderrahmane
  • Peresse, Perrine

Abstract

An integrated circuit for translating and reverse-translating the address included in a memory request is disclosed. The integrated circuit may first comprise a processor, a first boundary function, a second boundary function, and a component device. The processor is configured to transmit a memory request to a target module over a bus of the integrated circuit. The memory request requests access to one or more memory mapped resources and the memory request includes a physical address. The first boundary function is configured to translate the physical address to a relative address which operates in or applies to a different address space than an address space that the physical address operates in or applies to. The second boundary function is configured to translate the relative address to the physical address. The device is configured utilize the physical address transmitted by the second boundary function.

IPC Classes  ?

10.

Hardware Test Mode for Processor Core

      
Application Number 18529694
Status Pending
Filing Date 2023-12-05
First Publication Date 2025-06-05
Owner SiFive, Inc. (USA)
Inventor
  • Chiavacci, Monia
  • Randhawa, Robin
  • Southwell, Trefor

Abstract

Systems and methods are disclosed for implementing a hardware test mode for a processor core. For example, some methods may include writing to one or more test mode registers to change a microarchitectural state of a processor core from a first state to one or more test mode states; executing a sequence of instructions on the processor core in the one or more test mode states to obtain a resulting architectural state of the processor core; comparing the resulting architectural state to an expected architectural state associated with the sequence of instructions to obtain a test result; and writing to the one or more test mode registers to restore the microarchitectural state of the processor core to the first state.

IPC Classes  ?

  • G06F 11/263 - Generation of test inputs, e.g. test vectors, patterns or sequences

11.

DEPENDENCY TRACKING AND CHAINING FOR VECTOR INSTRUCTIONS

      
Application Number 19042632
Status Pending
Filing Date 2025-01-31
First Publication Date 2025-06-05
Owner SiFive, Inc. (USA)
Inventor
  • Burgess, Bradley Gene
  • Kravitz, David

Abstract

Apparatus and methods for dependency tracking, chaining, and/or fusing for vector instructions. A system, processor, or integrated circuit includes a renamer to generate a valid bit mask for each micro-operation decoded from a first vector instruction, where the valid bit mask indicates what portion of a mask register to write and generate a dependency bit mask for each micro-operation decoded from a second vector instruction, where the dependency bit mask is based on a relationship between the first vector instruction and the second vector instruction, and an issue queue configured to issue for execution each micro-operation from the second vector instruction when an associated dependency bit mask is cleared based on execution of appropriate micro-operations from the first vector instruction.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

12.

EVICTION OPERATIONS BASED ON EVICTION MESSAGE TYPES OF DIFFERENT PRIORITIES

      
Application Number 19041895
Status Pending
Filing Date 2025-01-30
First Publication Date 2025-06-05
Owner SiFive, Inc. (USA)
Inventor
  • Klinglesmith, Michael
  • Gouldey, Eric
  • Terpstra, Wesley

Abstract

An agent may be configured to invoke a first eviction operation that is interruptible by probe operations when receiving a first type of eviction message and invoke a second eviction operation in which probe operations are interruptible by the second eviction operation when receiving a second type of eviction message. In some implementations, the agent may maintain a data storage that is inclusive of at least one of unique or dirty cache blocks in a cache maintained by an agent that transmits the second type of eviction message. In some implementations, the agent may prevent a cache block from transitioning from a modified state to an exclusive state when the agent invokes the second eviction operation to evict the cache block. In some implementations, the agent may convert from the second eviction operation to the first eviction operation when receiving the second type of eviction message.

IPC Classes  ?

  • G06F 12/0831 - Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

13.

CONCURRENT SUPPORT FOR MULTIPLE CACHE INCLUSIVITY SCHEMES USING LOW PRIORITY EVICT OPERATIONS

      
Application Number 19044137
Status Pending
Filing Date 2025-02-03
First Publication Date 2025-06-05
Owner SiFive, Inc. (USA)
Inventor
  • Terpstra, Wesley
  • Van, Richard
  • Gouldey, Eric Andrew

Abstract

Systems and methods are disclosed for concurrent support for multiple cache inclusivity schemes using low priority evict operations. For example, some methods may include, receiving a first eviction message having a lower priority than probe messages from a first inner cache; receiving a second eviction message having a higher priority than probe messages from a second inner cache; transmitting a third eviction message, determined based on the first eviction message, having the lower priority than probe messages to a circuitry that is closer to memory in a cache hierarchy; and, transmitting a fourth eviction message, determined based on the second eviction message, having the lower priority than probe messages to the circuitry that is closer to memory in the cache hierarchy.

IPC Classes  ?

  • G06F 12/121 - Replacement control using replacement algorithms
  • G06F 12/084 - Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

14.

ORDERABILITY OF OPERATIONS

      
Application Number 19040817
Status Pending
Filing Date 2025-01-29
First Publication Date 2025-05-29
Owner SiFive, Inc. (USA)
Inventor
  • Gouldey, Eric Andrew
  • Klinglesmith, Michael
  • Cook, Henry
  • Terpstra, Wesley

Abstract

A method for managing orders of operations between one or more clients and one or more servers is disclosed. The method includes partitioning addressable regions of logical servers on or within an interconnect link into multiple regions including a first orderable region, and providing logical client an ability to push ordering responsibility within the first orderable region to a server. Over the first orderable region, two request messages for access to memory-mapped sources including two respective operations are transmitted, and the two request messages originate from a same logical client. The ordering responsibility can include a first rule for order of operations between the two request messages.

IPC Classes  ?

  • G06F 13/16 - Handling requests for interconnection or transfer for access to memory bus

15.

MEMORY PROTECTION FOR GATHER-SCATTER OPERATIONS

      
Application Number 19040861
Status Pending
Filing Date 2025-01-30
First Publication Date 2025-05-29
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for memory protection for memory protection for gather-scatter operations. For example, an integrated circuit may include a processor core; a memory protection circuit configured to check for memory protection violations with a protection granule; and an index range circuit configured to: memoize a maximum value and a minimum value of a tuple of indices stored in a vector register of the processor core as the tuple of indices is written to the vector register; determine a range of addresses for a gather-scatter memory instruction that takes the vector register as a set of indices based on a base address of a vector in memory, the memoized minimum value, and the memoized maximum value; and check, using the memory protection circuit during a single clock cycle, whether accessing elements of the vector within the range of addresses will cause a memory protection violation.

IPC Classes  ?

  • G06F 12/14 - Protection against unauthorised use of memory
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

16.

CANCELING PREFETCH OF CACHE BLOCKS BASED ON AN ADDRESS AND A BIT FIELD

      
Application Number 19016702
Status Pending
Filing Date 2025-01-10
First Publication Date 2025-05-08
Owner SiFive, Inc. (USA)
Inventor
  • Gouldey, Eric Andrew
  • Terpstra, Wesley
  • Klinglesmith, Michael

Abstract

Prefetch circuitry may be configured to transmit a message to cancel a prefetch of one or more cache blocks of a group. The message may correspond to a prefetch message by indicating an address for the group and a bit field for the one or more cache blocks of the group to cancel. In some implementations, the message may target a higher level cache to cancel prefetching the one or more cache blocks, and the message may be transmitted to the higher level cache via a lower level cache. In some implementations, the message may target a higher level cache to cancel prefetching the one or more cache blocks, the message may be transmitted to a lower level cache via a first command bus, and the lower level cache may forward the message to the higher level cache via a second command bus.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 12/0862 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
  • G06F 12/0897 - Caches characterised by their organisation or structure with two or more cache hierarchy levels

17.

DOWNGRADING A PERMISSION ASSOCIATED WITH DATA STORED IN A CACHE

      
Application Number 18979420
Status Pending
Filing Date 2024-12-12
First Publication Date 2025-04-03
Owner SiFive, Inc. (USA)
Inventor
  • Klinglesmith, Michael
  • Gouldey, Eric Andrew
  • Terpstra, Wesley

Abstract

Cache circuitry may be configured to receive a first message to downgrade a permission associated with data stored in a current level cache. For example, the current level cache could be a level two (L2) cache. The cache circuitry could receive the first message from a processor core having a level one (L1) cache. The cache circuitry may forward the first message to a higher level cache. For example, the higher level cache could be a level three (L3) cache. The cache circuitry may downgrade the permission associated with data stored in the current level cache based on receiving a second message from the higher level cache. The cache circuitry may forward the first message before receiving the second message and downgrading the permission. The second message may cause downgrade of the permission in multiple caches (e.g., the L1, L2, and L3 caches).

IPC Classes  ?

  • G06F 12/14 - Protection against unauthorised use of memory

18.

COMBINING DATA CHANNELS TO DETERMINE CAMERA POSE

      
Application Number US2024039184
Publication Number 2025/024463
Status In Force
Filing Date 2024-07-23
Publication Date 2025-01-30
Owner VIFIVE, INC. (USA)
Inventor
  • Choi, Inseok Stephen
  • Sawyer, Eric
  • Ko, Soonmin

Abstract

A system can include a memory and a processing device, operatively coupled to the memory, configured to perform operations including receiving, from a client device using a camera, two-dimensional (2D) image data representing a scene including a subject, providing, to a camera pose identification model, an input including information identifying a set of attributes of the camera, obtaining, from the camera pose identification model, an output including information identifying at least one camera pose parameter, and performing at least one task based on the output. The set of attributes of the camera includes at least one orientation angle of the camera about at least one axis. Performing the at least one task can include generating a three-dimensional (3D) representation of the subject depicted in the 2D image data.

IPC Classes  ?

  • G06V 40/20 - Movements or behaviour, e.g. gesture recognition
  • G06T 7/73 - Determining position or orientation of objects or cameras using feature-based methods
  • G06T 7/80 - Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration

19.

Measuring Performance Associated with Processing Instructions

      
Application Number 18357984
Status Pending
Filing Date 2023-07-24
First Publication Date 2025-01-30
Owner SiFive, Inc. (USA)
Inventor Simpson, David John

Abstract

A system may include a processor having a pipeline, a plurality of counters, and trigger circuitry. The plurality of counters may mount events associated with processing instructions in the pipeline. Counters of the plurality of counters may count different events. The trigger circuitry may trigger a performance measurement for a first instruction after counters of the plurality of counters meet predefined values. Triggering the performance measurement may cause the plurality of counters to reset and then count events associated with processing the first instruction. In some implementations, the trigger circuitry may trigger the performance measurement based on an AND selection and/or an OR selection of multiple counters of the plurality of counters meeting predefined values.

IPC Classes  ?

  • G06F 9/32 - Address formation of the next instruction, e.g. by incrementing the instruction counter
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

20.

Translation lookaside buffer probing prevention

      
Application Number 18344951
Grant Number 12204458
Status In Force
Filing Date 2023-06-30
First Publication Date 2025-01-02
Grant Date 2025-01-21
Owner SiFive, Inc. (USA)
Inventor Burgess, Bradley Gene

Abstract

Described are methods, logic, and circuitry which prevent translation lookaside buffer probing. Reporting a privilege violation fault is delayed for a defined period of time. The defined period of time can be a time frame needed to perform a long page table walk, which can be at least hundreds of clock cycles. A counter or a forced page table walk corresponding to the defined period of time can be used to implement the delay.

IPC Classes  ?

  • G06F 12/1027 - Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
  • G06F 12/1009 - Address translation using page tables, e.g. page table structures

21.

INTEGRATED CIRCUIT DESIGN USING METADATA

      
Application Number 18810838
Status Pending
Filing Date 2024-08-21
First Publication Date 2024-12-12
Owner SiFive, Inc. (USA)
Inventor
  • Chen, Albert Pengju
  • Izraelevitz, Adam Moshe

Abstract

An integrated circuit design may be generated for an integrated circuit. The integrated circuit design may include an instance of a module description that describes a functional operation of a module. The integrated circuit design may be encoded in an intermediate representation (IR) data structure. A parameter comprising metadata associated with the instance may be received. A compiler may compile the IR data structure to produce a register-transfer level (RTL) data structure. The RTL data structure may encode a logic description associated with the instance. Compiling the IR data structure may include associating the parameter comprising metadata with the logic description.

IPC Classes  ?

  • G06F 30/327 - Logic synthesisBehaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
  • G06F 8/41 - Compilation

22.

Systems and methods for clock gating

      
Application Number 18744598
Grant Number 12346187
Status In Force
Filing Date 2024-06-15
First Publication Date 2024-12-12
Grant Date 2025-07-01
Owner SiFive, Inc. (USA)
Inventor
  • Mclellan, Edward
  • Chowdury, Arjun Pal
  • Walmsley, Paul

Abstract

Described are systems and methods for clock gating components on a system-on-chip. A processing system includes one or more cores, each core including a clock gating enable bit register which is set by software when an expected idle period of the core meets or exceeds a clock gating threshold, and a power management unit connected to the one or more cores. The power management unit configured to receive an idle notification from a core of the one or more cores and initiate clock gating a clock associated with the core when the core and additional logic is quiescent and the clock gating enable bit register is set. The clock gating threshold is a defined magnitude greater than a clock wake-up time.

IPC Classes  ?

  • G06F 1/32 - Means for saving power
  • G06F 1/3206 - Monitoring of events, devices or parameters that trigger a change in power modality
  • G06F 1/3237 - Power saving characterised by the action undertaken by disabling clock generation or distribution

23.

CACHE REPLACEMENT POLICY STATE STRUCTURE WITH EXTRA STATES FOR PREFETCH AND NON-TEMPORAL LOADS

      
Application Number 18330607
Status Pending
Filing Date 2023-06-07
First Publication Date 2024-12-12
Owner SiFive, Inc. (USA)
Inventor Burgess, Bradley Gene

Abstract

Described are methods, data structures, logic, and circuitry which enable a cache replacement policy to track a number of cache states greater than a number of ways in a cache. A cache replacement policy state structure provides that the number of cache states is greater than the N ways for each way per cache index in the cache The additional states can enable different handling and prioritization of data that has been prefetched (prefetch cache states) or loaded with a non-temporal hint from software (non-temporal cache states). The number of prefetcher states and non-temporal states are each less than the number of ways. The non-temporal states can only be promoted to certain of the cache states.

IPC Classes  ?

  • G06F 12/123 - Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
  • G06F 12/0862 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
  • G06F 12/126 - Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

24.

INTEGRATED CIRCUIT DESIGN VERIFICATION WITH MODULE SWAPPING

      
Application Number 18805453
Status Pending
Filing Date 2024-08-14
First Publication Date 2024-12-05
Owner SiFive, Inc. (USA)
Inventor
  • Izraelevitz, Adam Moshe
  • Chen, Albert Pengju

Abstract

An integrated circuit design may be generated for an integrated circuit. The integrated circuit design may include an instance of a module description that describes a functional operation of a module. The instance may include an input and an output. The integrated circuit design may be encoded in an intermediate representation (IR) data structure. Parameters may be received indicating that the instance should be replaced with a simulation model. The parameters may include a first parameter pointing to the instance and a second parameter pointing to the simulation model.

IPC Classes  ?

  • G06F 30/3308 - Design verification, e.g. functional simulation or model checking using simulation

25.

SELECTABLE AND HIERARCHICAL POWER MANAGEMENT

      
Application Number 18787944
Status Pending
Filing Date 2024-07-29
First Publication Date 2024-11-21
Owner SiFive, Inc. (USA)
Inventor Mclellan, Edward

Abstract

Described are systems and methods for power management. A processing system includes one or more cores and a connected power management unit (PMU). The PMU is selected from one of: a first level PMU which can power scale a; a second level PMU which can independently control power from a shared cluster power supply to each core of two or more cores in a cluster; a third level PMU where each core includes a power monitor which can track power performance metrics of an associated core; and a fourth level PMU when a complex includes multiple clusters and each cluster includes a set of the one or more cores, the fourth level PMU including a complex PMU and a cluster PMU for each of the multiple clusters, the complex PMU and cluster PMUs provide two-tier power management. Higher level PMUs include power management functionality of lower level PMUs.

IPC Classes  ?

  • G06F 1/26 - Power supply means, e.g. regulation thereof
  • G06F 1/28 - Supervision thereof, e.g. detecting power-supply failure by out of limits supervision

26.

Determining an error handling mode

      
Application Number 18142091
Grant Number 12332733
Status In Force
Filing Date 2023-05-02
First Publication Date 2024-11-07
Grant Date 2025-06-17
Owner SiFive, Inc. (USA)
Inventor
  • Mcnairy, Cameron
  • Klinglesmith, Michael

Abstract

A first circuitry may have a first interface. A response circuitry having a system interface may connect to the first circuitry. The response circuitry may receive an input selection that determines an error handling mode used to respond to an error (e.g., in a lockstep system, the error could be a difference between an output at the first interface and a second output at a second interface identified by comparing the first output to the second output). In some implementations, the error handling mode may cause the response circuitry to provide the output to the system interface and send an indication to software based on detecting the error. In some implementations, the error handling mode may cause the response circuitry to contain at least a portion of the output by disabling at least a portion of the system interface for multiple clock cycles based on detecting the error.

IPC Classes  ?

  • G06F 11/07 - Responding to the occurrence of a fault, e.g. fault tolerance

27.

DEPENDENCY TRACKING AND CHAINING FOR VECTOR INSTRUCTIONS

      
Application Number 18139395
Status Pending
Filing Date 2023-04-26
First Publication Date 2024-10-31
Owner SiFive, Inc. (USA)
Inventor
  • Burgess, Bradley Gene
  • Kravitz, David

Abstract

Apparatus and methods for dependency tracking, chaining, and/or fusing for vector instructions. A system, processor, or integrated circuit includes a renamer to generate a valid bit mask for each micro-operation decoded from a first vector instruction, where the valid bit mask indicates what portion of a mask register to write and generate a dependency bit mask for each micro-operation decoded from a second vector instruction, where the dependency bit mask is based on a relationship between the first vector instruction and the second vector instruction, and an issue queue configured to issue for execution each micro-operation from the second vector instruction when an associated dependency bit mask is cleared based on execution of appropriate micro-operations from the first vector instruction.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

28.

Bundling and dynamic allocation of register blocks for vector instructions

      
Application Number 18140792
Grant Number 12293192
Status In Force
Filing Date 2023-04-28
First Publication Date 2024-10-31
Grant Date 2025-05-06
Owner SiFive, Inc. (USA)
Inventor
  • Burgess, Bradley Gene
  • Kravitz, David
  • Solomatnikov, Alexandre

Abstract

Apparatus and methods which bundle micro-operations with respect to a vector instruction, dynamically allocate register blocks for a vector instruction, and track the registers using valid bits. A method includes decoding, by a decoder, a vector instruction having a length multiplier of at least two into a number of micro-operations less than the length multiplier, allocating, by an issue queue, an issue queue entry to each of the number of micro-operations and executing, by the issue queue with execution units, each of the number of micro-operations a number of times from the issue queue entry to collectively match the length multiplier.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

29.

PREFETCHER WITH OUT-OF-ORDER FILTERED PREFETCHER TRAINING QUEUE

      
Application Number 18758994
Status Pending
Filing Date 2024-06-28
First Publication Date 2024-10-24
Owner SIFive , Inc. (USA)
Inventor
  • Tiwari, Binayak
  • Alexander, Benoy
  • Ingallis, John
  • Gupta, Mohit

Abstract

Described is a system and method for implementing a prefetcher with an out-of-order filtered prefetcher training queue. A processing system includes a prefetcher and a prefetcher training queue connected to the prefetcher. The prefetcher training queue configured to receive one or more demand requests from one or more load-store units, allocate a prefetcher training queue entry for a non-duplicative demand request, and send, to the prefetcher, a stored demand request together with a hit or miss indicator, wherein the prefetcher training queue sends stored demand requests without regard to program order.

IPC Classes  ?

  • G06F 12/0862 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

30.

Debug in system on a chip with securely partitioned memory space

      
Application Number 18577677
Grant Number 12399721
Status In Force
Filing Date 2022-06-03
First Publication Date 2024-10-10
Grant Date 2025-08-26
Owner SiFive, Inc. (USA)
Inventor
  • Edgar, Ernest L.
  • Loisel, Yann

Abstract

Systems and methods are disclosed for debug in a system on a chip with a securely partitioned memory space. For example, an integrated circuit (e.g., a processor) for executing instructions includes a processor core configured to execute instructions, including a data store configured to store a first world identifier; an outer memory system configured to store instructions and data; a data store configured to store a debug world list that specifies which world identifiers supported by the integrated circuit are authorized for debugging; and a debug enable circuitry configured to generate a debug enable signal based on the first world identifier and the debug world list, wherein the processor core is configured to jump to debug handler instructions in response to a debug exception or ignore the debug exception depending on the debug enable signal.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/4401 - Bootstrapping
  • G06F 11/362 - Debugging of software
  • G06F 12/02 - Addressing or allocationRelocation
  • G06F 12/1027 - Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
  • G06F 12/14 - Protection against unauthorised use of memory
  • G06F 21/53 - Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity, buffer overflow or preventing unwanted data erasure by executing in a restricted environment, e.g. sandbox or secure virtual machine
  • G06F 21/57 - Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
  • G06F 21/74 - Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode

31.

PAGE TABLE ENTRY CACHES WITH MULTIPLE TAG LENGTHS

      
Application Number 18747399
Status Pending
Filing Date 2024-06-18
First Publication Date 2024-10-10
Owner SIFIVE, INC. (USA)
Inventor
  • Peresse, Perrine
  • Mukherjee, Shubhendu Sekhar
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for page table entry caches with multiple tag lengths. For example, an integrated circuit (e.g., a processor) includes a page table walk circuitry including a page table entry cache, in which the page table walk circuitry is configured to access a multi-level page table, and in which a first entry of the page table entry cache combines a first number of multiple levels and a second entry of the page table entry cache combines a second number of multiple levels that is different from the first number of multiple levels.

IPC Classes  ?

  • G06F 12/1009 - Address translation using page tables, e.g. page table structures
  • G06F 12/0882 - Page mode
  • G06F 12/1045 - Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

32.

INTEGRATED CIRCUIT GENERATION WITH IMPROVED INTERCONNECT

      
Application Number 18747410
Status Pending
Filing Date 2024-06-18
First Publication Date 2024-10-10
Owner SIFIVE, INC. (USA)
Inventor
  • Adler, Robert P.
  • Parry, David
  • Chen, Rick H. Y.
  • Cook, Henry

Abstract

Disclosed are systems and methods that include accessing design parameters to configure an integrated circuit design. The integrated circuit design may include a transaction source or processing node to be included in an integrated circuit. The transaction source or processing node may be configured to transmit memory transactions to memory addresses. A compiler may compile the integrated circuit design with the transaction source or processing node to generate a design output. The design output may be configured to route memory transactions based on their targeting cacheable or non-cacheable memory addresses. The design output may be used to manufacture an integrated circuit.

IPC Classes  ?

  • G06F 13/16 - Handling requests for interconnection or transfer for access to memory bus
  • G06F 12/0888 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass

33.

CONFIGURING A PREFETCHER ASSOCIATED WITH A PROCESSOR CORE

      
Application Number 18747412
Status Pending
Filing Date 2024-06-18
First Publication Date 2024-10-10
Owner SIFIVE, INC. (USA)
Inventor
  • Walmsley, Paul
  • Ingalls, John
  • Alexander, Benoy

Abstract

Disclosed are systems and methods for configuring a prefetcher. A process may reconfigure a prefetcher associated with a processor core responsive to a context switch. The context switch may comprise the processor core changing from executing a first process to a second process. In some implementations, reconfiguring the prefetcher may include updating a register controlling an operation of the prefetcher from a first set of parameters associated with the first process to a second set of parameters associated with the second process. In some implementations, the second set of parameters may be based on input from a process executed in a user mode.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

34.

INTEGRATED CIRCUIT GENERATION WITH COMPOSABLE INTERCONNECT

      
Application Number 18747403
Status Pending
Filing Date 2024-06-18
First Publication Date 2024-10-10
Owner SiFive, Inc. (USA)
Inventor
  • Adler, Robert P.
  • Macdonald, Ryan
  • De, Asmit
  • Cook, Henry

Abstract

Disclosed are systems and methods that include integrated circuit generation with composable interconnect. In some implementations, a system may access a design parameters data structure that specifies an interconnect topology to be included in an integrated circuit. The system may invoke an integrated circuit design generator that applies the design parameters data structure, including with the interconnect topology. In some implementations, the design parameters data structure may specify a definition for a hardware object (e.g., the interconnect topology) and instances of the hardware object. The definition and the instances may each be modifiable. The system may invoke the generator to apply the design parameters data structure to generate the design.

IPC Classes  ?

35.

STORE-TO-LOAD FORWARDING FOR PROCESSOR PIPELINES

      
Application Number 18747414
Status Pending
Filing Date 2024-06-18
First Publication Date 2024-10-10
Owner SIFIVE, INC. (USA)
Inventor Ingalls, John

Abstract

Systems and methods are disclosed for store-to-load forwarding for processor pipelines. For example, an integrated circuit (e.g., a processor) for executing instructions includes a processor pipeline; a store queue that has entries associated with respective store instructions that are being executed, wherein an entry of the store queue includes a tag that is determined based on a virtual address of a target of the associated store instruction; and store-to-load forwarding circuitry that is configured to: compare a first virtual address of a target of a first load instruction being executed by the load unit to respective tags of one or more entries in the store queue; select an entry of the store queue based on a match between the first virtual address and the tag of the selected entry; and forward data of the selected entry in the store queue to be returned by the first load instruction.

IPC Classes  ?

  • G06F 12/1009 - Address translation using page tables, e.g. page table structures
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

36.

CYCLE ACCURATE TRACING OF VECTOR INSTRUCTIONS

      
Application Number 18758980
Status Pending
Filing Date 2024-06-28
First Publication Date 2024-10-10
Owner SIFIVE, INC. (USA)
Inventor
  • Ableidinger, Bruce
  • Edgar, Ernest L.

Abstract

Systems and methods are disclosed for cycle accurate tracing of vector instructions. For example, a system may include a vector unit in communication with a scalar core. The vector unit may include a vector instruction queue that receives vector instructions from the scalar core. The vector unit may also include a vector execution unit that executes vector instructions from the vector instruction queue. The system may also include checkpoints in the vector unit including a first checkpoint including circuitry that sets a first bit for a first clock cycle in which a first vector instruction exits the vector instruction queue, and a second checkpoint including circuitry that sets a second bit for a second clock cycle in which a second vector instruction exits the vector execution unit.

IPC Classes  ?

  • G06F 11/14 - Error detection or correction of the data by redundancy in operation, e.g. by using different operation sequences leading to the same result
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 11/36 - Prevention of errors by analysis, debugging or testing of software

37.

QUAD NARROWING OPERATION

      
Application Number 18739757
Status Pending
Filing Date 2024-06-11
First Publication Date 2024-10-03
Owner SIFIVE, INC. (USA)
Inventor
  • Waterman, Andrew
  • Knight, Nicholas

Abstract

Systems and methods are disclosed for implementing a quad narrowing operation. The quad narrowing operation converts an output of a 32 bit floating-point operation to the 8 bit integer format by rounding the 32 bit floating-point operation and clamping the rounded 32 bit floating-point input by an 8 bit lower bound and an 8 bit upper bound which are defined in a 16 bit scalar register to generate the fixed-point output. The 8 bit lower bound is defined by the 8 most significant bits of the 16 bit scalar register and the 8 bit upper bound is defined by the 8 least significant bits of the 16 bit scalar register.

IPC Classes  ?

  • G06F 7/499 - Denomination or exception handling, e.g. rounding or overflow

38.

HYBRID FIXED-POINT AND FLOATING-POINT COMPUTATIONS FOR IMPROVED NEURAL NETWORK ACCURACY

      
Application Number 18744143
Status Pending
Filing Date 2024-06-14
First Publication Date 2024-10-03
Owner SIFIVE, INC. (USA)
Inventor Knight, Nicholas

Abstract

Systems and methods are disclosed for using hybrid floating-point and fixed-point computations for improved neural network accuracy. A neural network is defined using fixed-point computational units. Certain of the fixed-point computational units are identified based on replacement criteria. The identified fixed-point computational units are replaced with floating-point computational units to increase computational accuracy with minimal computational cost.

IPC Classes  ?

  • G06F 7/483 - Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

39.

Processor Crash Analysis Using Register Sampling

      
Application Number 18579166
Status Pending
Filing Date 2022-07-11
First Publication Date 2024-09-26
Owner SiFive, Inc. (USA)
Inventor
  • Edgar, Ernest L.
  • Ableidinger, Bruce

Abstract

Systems and methods are disclosed for processor crash analysis using register sampling. For example, an integrated circuit may include a processor core configured to execute instructions, wherein the processor core includes a program counter register and an exception program counter register (e.g., a machine exception program counter register) that is configured to store a program counter value that was current when an exception occurred; a data store connected to the exception program counter register via an ingress port that is configured to store a copy of an exception program counter value responsive to retirement of an instruction; and an exception program counter capture register, configured to store an exception program counter value from the second data store responsive to a reset signal for the processor core.

IPC Classes  ?

  • G06F 11/07 - Responding to the occurrence of a fault, e.g. fault tolerance

40.

EVENT TRACING

      
Application Number 18733046
Status Pending
Filing Date 2024-06-04
First Publication Date 2024-09-26
Owner SIFIVE, INC. (USA)
Inventor
  • Ableidinger, Bruce
  • Edgar, Ernest L.

Abstract

Systems and methods are disclosed for debug event tracing. For example, an integrated circuit (e.g., a processor) for executing instructions includes a processor core; a data store configured to store a code indicating a cause of an interrupt; a trace buffer configured to store a sequence of debug trace messages; and a debug trace circuitry that is configured to: responsive to a first interrupt to the processor core, generate a first debug trace message including a timestamp and a code from the data store that indicates a cause of the first interrupt; and store the first debug trace message in the trace buffer. In some implementations, the timestamp is generated using a Gray code counter of the integrated circuit.

IPC Classes  ?

  • G06F 11/36 - Prevention of errors by analysis, debugging or testing of software

41.

Nested Loop Optimization with Vector Memory Instructions

      
Application Number 18578007
Status Pending
Filing Date 2022-07-12
First Publication Date 2024-09-19
Owner SiFive, Inc. (USA)
Inventor Knight, Nicholas

Abstract

A program sequence, comprising an inner loop nested in an outer loop, may be converted to multiple statements of the inner loop with a statement of the multiple statements changing by an index of the outer loop. A memory access for a first statement of the multiple statements may be combined with a memory access for a second statement of the multiple statements via a vector instruction (e.g., a segmented-strided vector instruction). The vector instruction may be configured to access sets of N data elements, where N is a segment size of data elements in consecutive locations in memory, and where sets of N data elements are spaced at a constant distance in memory.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

42.

Error Management In System On A Chip With Securely Partitioned Memory Space

      
Application Number 18579134
Status Pending
Filing Date 2022-06-06
First Publication Date 2024-09-12
Owner SiFive, Inc. (USA)
Inventor
  • Asanovic, Krste
  • Loisel, Yann
  • Ingalls, John
  • Mukherjee, Shubhendu Sekhar

Abstract

Systems and methods are disclosed for error management in a system on a chip with a securely partitioned memory space. For example, an integrated circuit (e.g., a processor) for executing instructions includes a world identifier checker circuitry configured to check memory requests for one or more memory mapped resources that are received via the bus that have been tagged with a world identifier to determine whether to allow or reject access based on the tagged world identifier; a world identifier checker circuitry configured to compare the tagged world identifier to a world list for a resource that specifies which world identifiers supported by the integrated circuit are authorized for access to the resource; and a data store configured to store world error data, including the tagged world identifier of a memory request that has been rejected by the world identifier checker circuitry.

IPC Classes  ?

  • G06F 11/07 - Responding to the occurrence of a fault, e.g. fault tolerance

43.

Vector Instruction Processing After Primary Decode

      
Application Number 18180327
Status Pending
Filing Date 2023-03-08
First Publication Date 2024-09-12
Owner SiFive, Inc. (USA)
Inventor
  • Burgess, Bradley Gene
  • Kravitz, David

Abstract

Apparatus and methods for cracking and processing vector instructions in a vector pipeline after decoding of a single or a first micro-operation in a main or primary pipeline are described. An integrated circuit includes a primary pipeline to decode a micro-operation from an instruction, create a reorder buffer entry in a reorder buffer for the micro-operation, responsive to a determination that the instruction is a vector instruction, send the micro-operation to a vector pipeline, and responsive to a determination that the instruction is a multiple register vector instruction, signal a vector pipeline to decode a remaining micro-operations from the instruction, and the vector pipeline to process the micro-operation, and process the remaining micro-operations when the instruction is the multiple register vector instruction.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

44.

Address range encoding in system on a chip with securely partitioned memory space

      
Application Number 18115457
Grant Number 12346268
Status In Force
Filing Date 2023-02-28
First Publication Date 2024-08-29
Grant Date 2025-07-01
Owner SiFive, Inc. (USA)
Inventor Asanovic, Krste

Abstract

Systems and methods are disclosed for address range encoding in a system on a chip with a securely partitioned memory space. For example, methods may include receiving, via a bus from a processor core, a memory request for a memory mapped resource; comparing an address included in the memory request to an address range, determined based on an address field and an address range configuration field, for a resource; comparing a first hardware security identifier from the memory request to a hardware security list associated with the resource when the address of the memory request is within the address range for the resource; and, based on the comparison of the first hardware security identifier with the hardware security list, determining whether to allow or reject access to the resource for the memory request.

IPC Classes  ?

  • G06F 12/14 - Protection against unauthorised use of memory
  • G06F 21/72 - Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

45.

SERIAL WIRE TIMER DISTRIBUTION

      
Application Number 18473351
Status Pending
Filing Date 2023-09-25
First Publication Date 2024-08-22
Owner SiFive, Inc. (USA)
Inventor Winston, Marcus

Abstract

Systems and methods are disclosed for serial wire timer distribution in an SoC. For example, some methods may include adding an offset to a current timestamp to obtain an offset timestamp; serially transmitting the offset timestamp on a first conductor according to a functional-logic clock signal; receiving the offset timestamp via the first conductor; and writing the offset timestamp to a timestamp register at a time according to an edge of a fixed-frequency reference clock signal on a second conductor.

IPC Classes  ?

  • G06F 30/392 - Floor-planning or layout, e.g. partitioning or placement

46.

Macro-Op Fusion for Pipelined Architectures

      
Application Number 18428319
Status Pending
Filing Date 2024-01-31
First Publication Date 2024-08-08
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste
  • Smith, Josh

Abstract

Systems and methods are disclosed for macro-op fusion in pipelined architectures. For example, some methods include detecting a sequence of macro-ops stored in an instruction decode buffer, the sequence of macro-ops including a first macro-op, followed by one or more intervening macro-ops, followed by a last macro-op; determining a micro-op that is equivalent to the first macro-op combined with the last macro-op; and forwarding the micro-op to one or more execution resource circuitries for execution.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/24 - Loading of the microprogram

47.

Address boundary functions for physical and localized addresses

      
Application Number 18474411
Grant Number 12248405
Status In Force
Filing Date 2023-09-26
First Publication Date 2024-08-01
Grant Date 2025-03-11
Owner SiFive, Inc. (USA)
Inventor
  • Liberty, Dean
  • Adler, Robert P.
  • Cook, Henry
  • Sensaoui, Abderrahmane
  • Peresse, Perrine

Abstract

An integrated circuit for translating and reverse-translating the address included in a memory request is disclosed. The integrated circuit may first comprise a processor, a first boundary function, a second boundary function, and a component device. The processor is configured to transmit a memory request to a target module over a bus of the integrated circuit. The memory request requests access to one or more memory mapped resources and the memory request includes a physical address. The first boundary function is configured to translate the physical address to a relative address which operates in or applies to a different address space than an address space that the physical address operates in or applies to. The second boundary function is configured to translate the relative address to the physical address. The device is configured utilize the physical address transmitted by the second boundary function.

IPC Classes  ?

48.

PARTITIONING A CACHE FOR APPLICATION OF A REPLACEMENT POLICY

      
Application Number 18406128
Status Pending
Filing Date 2024-01-06
First Publication Date 2024-07-11
Owner SiFive, Inc. (USA)
Inventor
  • Terpstra, Wesley Waylon
  • Van, Richard
  • Huang, Chao Wei
  • Heuer, Kevin

Abstract

Systems and methods are disclosed for partitioning a cache for application of a replacement policy. For example, some methods may include partitioning entries of a set in a cache into two or more subsets; receiving a message that will cause a cache block replacement; responsive to the message, selecting a way of the cache by applying a replacement policy to entries of the cache from only a first subset of the two or more subsets; and responsive to the message, evicting an entry of the cache in the first subset and in the selected way.

IPC Classes  ?

  • G06F 12/0811 - Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
  • G06F 12/123 - Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

49.

Processing for vector load or store micro-operation with inactive mask elements

      
Application Number 18335412
Grant Number 12210874
Status In Force
Filing Date 2023-06-15
First Publication Date 2024-07-04
Grant Date 2025-01-28
Owner SiFive, Inc. (USA)
Inventor Wu, Yueh Chi

Abstract

Apparatus and methods for processing of a vector load or store micro-operation with mask information as a no-operation (no-op) when a mask vector for the vector load or store micro-operation has all inactive mask elements or processing vector load or store sub-micro-operation(s) with active mask element(s) are described. An integrated circuit includes a load store unit configured to receive load or store micro-operations cracked from a vector load or store operation, determine that a mask vector for the vector load or store micro-operation is fully inactive, and process the vector load or store micro-operation as a no-operation. If the mask vector is not fully inactive, the vector load or store micro-operation is unrolled into vector load or store sub-micro-operation(s) which have active mask element(s). Vector load or store sub-micro-operation(s) which have inactive mask element(s) are ignored.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

50.

Tracking of store operations

      
Application Number 18335528
Grant Number 12314715
Status In Force
Filing Date 2023-06-15
First Publication Date 2024-07-04
Grant Date 2025-05-27
Owner SiFive, Inc. (USA)
Inventor
  • Wu, Yueh Chi
  • Rabefarihy, Yohann

Abstract

Apparatus and methods for tracking sub-micro-operations and groups thereof are described. An integrated circuit includes a load store unit configured to receive store micro-operations cracked from a vector store instruction. The load store unit is configured to unroll multiple store sub-micro-operations from each of the store micro-operations. The load store unit includes an issue status vector to track issuance of each sub-micro-operation, an unroll status vector to track unrolling of each sub-micro-operation associated with a group of sub-micro-operations, and a replay status vector to track a replayability of sub-micro-operations associated with the group of sub-micro-operations.

IPC Classes  ?

  • G06F 9/22 - Microcontrol or microprogram arrangements
  • G06F 9/24 - Loading of the microprogram

51.

Making Circuitry Having An Attribute

      
Application Number 18142087
Status Pending
Filing Date 2023-05-02
First Publication Date 2024-07-04
Owner SiFive, Inc. (USA)
Inventor
  • Mcnairy, Cameron
  • Urbach, Michael Avner
  • Schmidt, Colin

Abstract

A system may generate an annotation based on an attribute determined in connection with logic. In some implementations, the logic may be between a first function (e.g., a first point of logic, such as an encoder) and a second function (e.g., a second point of logic, such as a decoder) in a first level circuit representation. The attribute may indicate, for example, fault protection using error correction code, parity, or Gray code, or a power level, frequency domain, or clock domain. The system may then identify circuitry in a second level circuit representation corresponding to the annotated logic in the first level circuit representation. The second level circuit representation may be generated based on the first level circuit representation. The system may then mark the identified circuitry in the second level circuit representation having the attribute. In some implementations, the system may determine a fault profile of an integrated circuit design based on the marking.

IPC Classes  ?

  • G06F 30/3323 - Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking

52.

INTEGRATED CIRCUIT GENERATOR USING A PROVIDER

      
Application Number 18197422
Status Pending
Filing Date 2023-05-15
First Publication Date 2024-06-27
Owner SiFive, Inc. (USA)
Inventor
  • Koenig, Jack
  • Wachs, Megan
  • Cook, Henry

Abstract

A system may provide a placeholder for a component in a block of a first-level integrated circuit design without wiring at least one port of the component. The system may determine a mapping to a provider interface in the block. The system may invoke an integrated circuit generator to generate a second-level integrated circuit design based on the first-level integrated circuit design. The generator when executed replaces the provider interface with the component including wiring ports of the component, including the at least one port, in the second-level integrated circuit design according to the mapping. In some implementations, an application program interface may enable a provider to communicate with the generator. The provider can utilize the API to instantiate the provider interface and determine the mapping.

IPC Classes  ?

  • G06F 30/327 - Logic synthesisBehaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

53.

Concurrent support for multiple cache inclusivity schemes using low priority evict operations

      
Application Number 18390223
Grant Number 12259825
Status In Force
Filing Date 2023-12-20
First Publication Date 2024-06-20
Grant Date 2025-03-25
Owner SiFive, Inc. (USA)
Inventor
  • Terpstra, Wesley Waylon
  • Van, Richard
  • Gouldey, Eric Andrew

Abstract

Systems and methods are disclosed for concurrent support for multiple cache inclusivity schemes using low priority evict operations. For example, some methods may include, receiving a first eviction message having a lower priority than probe messages from a first inner cache; receiving a second eviction message having a higher priority than probe messages from a second inner cache; transmitting a third eviction message, determined based on the first eviction message, having the lower priority than probe messages to a circuitry that is closer to memory in a cache hierarchy; and, transmitting a fourth eviction message, determined based on the second eviction message, having the lower priority than probe messages to the circuitry that is closer to memory in the cache hierarchy.

IPC Classes  ?

  • G06F 12/121 - Replacement control using replacement algorithms
  • G06F 12/0811 - Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
  • G06F 12/084 - Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

54.

Debug trace circuitry configured to generate a record including an address pair and a counter value

      
Application Number 18502270
Grant Number 12367047
Status In Force
Filing Date 2023-11-06
First Publication Date 2024-06-13
Grant Date 2025-07-22
Owner SiFive, Inc. (USA)
Inventor Ableidinger, Bruce

Abstract

Systems and methods are disclosed for debug path profiling. For example, a processor pipeline may execute instructions. A debug trace circuitry may, responsive to an indication of a non-sequential execution of an instruction by the processor pipeline, generate a record including an address pair and one or more counter values. The address pair may include a first address corresponding to a first instruction before the non-sequential execution and a second address corresponding to a second instruction resulting in the non-sequential execution. The one or more counter values may indicate, for example, a count of instructions executed, a type of instruction executed, cache misses, cycles consumed by cache misses, translation lookaside buffer misses, cycles consumed by translation lookaside buffer misses, and/or processor stalls.

IPC Classes  ?

  • G06F 9/44 - Arrangements for executing specific programs
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

55.

Canceling prefetch of cache blocks based on an address and a bit field

      
Application Number 18182772
Grant Number 12197335
Status In Force
Filing Date 2023-03-13
First Publication Date 2024-06-06
Grant Date 2025-01-14
Owner SiFive, Inc. (USA)
Inventor
  • Gouldey, Eric Andrew
  • Terpstra, Wesley Waylon
  • Klinglesmith, Michael

Abstract

Prefetch circuitry may be configured to transmit a message to cancel a prefetch of one or more cache blocks of a group. The message may correspond to a prefetch message by indicating an address for the group and a bit field for the one or more cache blocks of the group to cancel. In some implementations, the message may target a higher level cache to cancel prefetching the one or more cache blocks, and the message may be transmitted to the higher level cache via a lower level cache. In some implementations, the message may target a higher level cache to cancel prefetching the one or more cache blocks, the message may be transmitted to a lower level cache via a first command bus, and the lower level cache may forward the message to the higher level cache via a second command bus.

IPC Classes  ?

  • G06F 12/0862 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 12/0897 - Caches characterised by their organisation or structure with two or more cache hierarchy levels

56.

Prefetching Cache Blocks Based on an Address for a Group and a Bit Field

      
Application Number 18182778
Status Pending
Filing Date 2023-03-13
First Publication Date 2024-06-06
Owner SiFive, Inc. (USA)
Inventor
  • Gouldey, Eric Andrew
  • Terpstra, Wesley Waylon
  • Klinglesmith, Michael

Abstract

Prefetch circuitry may be configured to transmit a message to prefetch one or more cache blocks of a group. The message may indicate an address for the group of cache blocks and a bit field that indicates the one or more cache blocks of the group to prefetch. In some implementations, the message may target a higher level cache to prefetch the one or more cache blocks, and the message may be transmitted to the higher level cache via a lower level cache. In some implementations, the message may target a higher level cache to prefetch the one or more cache blocks, the message may be transmitted to a lower level cache via a first command bus, and the lower level cache may forward the message to the higher level cache via a second command bus.

IPC Classes  ?

  • G06F 12/0862 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

57.

Re-triggering wake-up to handle time skew between scalar and vector sides

      
Application Number 18338643
Grant Number 12265829
Status In Force
Filing Date 2023-06-21
First Publication Date 2024-06-06
Grant Date 2025-04-01
Owner SiFive, Inc. (USA)
Inventor Huang, Kuan Lin

Abstract

A method for re-triggering wakeup to handle time skew between a scalar operation and a vector operation is provided. The method includes: initiating, before a Load-Store (LST) pipeline completes an execution of a load operation corresponding to a vector micro-operation (uop) dispatched to a baler issue queue, a respective load operation in a Load (LD) pipeline corresponding to the vector uop; triggering a speculative wakeup from the LD pipeline during an execution of the respective load operation; triggering a second wakeup corresponding to the speculative wakeup from the LD pipeline; and waking up, based on the second wakeup, the vector micro-operation in the baler issue queue of the baler unit.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

58.

Speculative request indicator in request message

      
Application Number 18341217
Grant Number 12332799
Status In Force
Filing Date 2023-06-26
First Publication Date 2024-06-06
Grant Date 2025-06-17
Owner SiFive, Inc. (USA)
Inventor
  • Terpstra, Wesley Waylon
  • Gouldey, Eric Andrew
  • Klinglesmith, Michael
  • Cook, Henry

Abstract

A method and apparatus for a speculative request indicator is described. A method includes providing, for a cache hierarchy, a messaging protocol used for transfer operations among agents in the cache hierarchy, the messaging protocol indicating acceptable cache coherency states for a cache block indicated in a request message and providing, in the messaging protocol for selection by an agent, a speculative request indicator when sending the request message, wherein the speculative request indicator differentiates between a demand request and a speculative request with respect to the cache block.

IPC Classes  ?

  • G06F 12/0862 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
  • G06F 12/0811 - Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
  • G06F 12/0815 - Cache consistency protocols

59.

Eviction operations based on eviction message types of different priorities

      
Application Number 18341244
Grant Number 12248401
Status In Force
Filing Date 2023-06-26
First Publication Date 2024-06-06
Grant Date 2025-03-11
Owner SiFive, Inc. (USA)
Inventor
  • Klinglesmith, Michael
  • Gouldey, Eric Andrew
  • Terpstra, Wesley Waylon

Abstract

An agent may be configured to invoke a first eviction operation that is interruptible by probe operations when receiving a first type of eviction message and invoke a second eviction operation in which probe operations are interruptible by the second eviction operation when receiving a second type of eviction message. In some implementations, the agent may maintain a data storage that is inclusive of at least one of unique or dirty cache blocks in a cache maintained by an agent that transmits the second type of eviction message. In some implementations, the agent may prevent a cache block from transitioning from a modified state to an exclusive state when the agent invokes the second eviction operation to evict the cache block. In some implementations, the agent may convert from the second eviction operation to the first eviction operation when receiving the second type of eviction message.

IPC Classes  ?

  • G06F 12/0831 - Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

60.

Flexible Power Management Interface

      
Application Number 18483260
Status Pending
Filing Date 2023-10-09
First Publication Date 2024-06-06
Owner SiFive, Inc. (USA)
Inventor
  • Mclellan, Edward
  • Chowdury, Arjun Pal

Abstract

Systems and methods are described for a flexible and selectable power management interface. The flexible and selectable power management interface can provide multiple power management interfaces which are selectable based on a selected processor IP core, a selected power management controller, and a variety of factors. The flexible and selectable power management interface can be a direct handshake hardware interface, a memory-mapped bus interface, or a combination of the direct handshake hardware interface and the memory-mapped bus interface.

IPC Classes  ?

  • G06F 1/26 - Power supply means, e.g. regulation thereof

61.

BIT PATTERN MATCHING HARDWARE PREFETCHER

      
Application Number 18497170
Status Pending
Filing Date 2023-10-30
First Publication Date 2024-06-06
Owner SiFive, Inc. (USA)
Inventor
  • Alexander, Benoy
  • Ingalls, John
  • Tiwari, Binayak

Abstract

Described herein is a bit pattern matching hardware prefetcher which captures complex repeating patterns, allows out-of-order (OOO) training, and allows OOO confirmations. The prefetcher includes a plurality of prefetch engines. Each prefetch engine is associated with a zone, each zone has a plurality of subzones, and each subzone has a plurality of cache lines. The prefetcher includes an access map for each subzone. Each bit position represents a cache line in the plurality of cache lines. The prefetcher determines whether a demand request matches one of the plurality of prefetch engines, updates, with respect to the demand request, a bit position in an access map for a subzone in a matching prefetch engine, determines a pattern from an access map for a subzone when a defined number of demand requests have been matched to the subzone; and generates a prefetch request based on at least the determined pattern.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

62.

Transfer buffer between a scalar pipeline and vector pipeline

      
Application Number 18524185
Grant Number 12373210
Status In Force
Filing Date 2023-11-30
First Publication Date 2024-06-06
Grant Date 2025-07-29
Owner SiFive, Inc. (USA)
Inventor
  • Kravitz, David
  • Hanselman, Andrew
  • Burgess, Bradley Gene

Abstract

Systems and methods are disclosed for transferring an operand between a vector pipeline and a scalar pipeline. For example, some methods may include transferring an operand from a scalar pipeline to a scalar-to-vector buffer responsive to the scalar pipeline executing a first micro-op, wherein the scalar-to-vector buffer includes an entry having a width equal to a width of a scalar register of the scalar pipeline and a data store configured to store an indication mapping the entry to the first micro-op; updating the data store to include the indication mapping the entry to the first micro-op; identifying, by the vector pipeline in response to execution of a second micro-op and in dependence on the indication mapping the entry to the first micro-op, the entry storing the operand; and transferring the operand from the entry in the scalar-to-vector buffer to the vector pipeline responsive to the vector pipeline executing the second micro-op.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/355 - Indexed addressing

63.

Vector Load Store Operations in a Vector Pipeline Using a Single Operation in a Load Store Unit

      
Application Number 18524222
Status Pending
Filing Date 2023-11-30
First Publication Date 2024-06-06
Owner SiFive, Inc. (USA)
Inventor
  • Burgess, Bradley Gene
  • Kravitz, David
  • Solomatnikov, Alexandre

Abstract

Systems and methods are disclosed for transferring data between a memory system and a vector register file. For example, a system may include a vector pipeline including a vector physical register file; a load store unit; one or more pipeline stages configured to decode a vector memory instruction to obtain a macro-operation and dispatch the macro-operation to both the load store unit and the vector pipeline, and a baler circuitry, including a buffer with entries. The vector pipeline is configured to crack the macro-operation into multiple micro-operations. The baler circuitry is configured to implement the multiple micro-operations to transfer data between one or more selected entries of the buffer and respective registers of the vector physical register file. The load store unit is configured to implement the macro-operation to transfer data between one or more addresses in a memory system and the one or more selected entries of the buffer.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

64.

Accelerated Vector Reduction Operations

      
Application Number 18524391
Status Pending
Filing Date 2023-11-30
First Publication Date 2024-06-06
Owner SiFive, Inc. (USA)
Inventor
  • Brunie, Nicolas Rémi
  • Tsao, Kaihsiang
  • Wu, Yueh Chi

Abstract

Systems and methods are disclosed for accelerated vector-reduction operations. Some systems may include a vector register file configured to store register values of an instruction set architecture in physical registers; and an execution circuitry configured to, responsive to a folding micro-op: read a vector from a physical register of the vector register file or from bypass circuitry; partition the elements of the vector into a first subset of elements with even indices and a second subset with elements with odd indices; and apply a reduction operation to combine elements from the second subset of elements with corresponding elements from the first subset of elements to obtain a set of reduced elements.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

65.

Data storage in non-inclusive cache

      
Application Number 18524982
Grant Number 12430252
Status In Force
Filing Date 2023-11-30
First Publication Date 2024-06-06
Grant Date 2025-09-30
Owner SiFive, Inc. (USA)
Inventor
  • Terpstra, Wesley Waylon
  • Van, Richard

Abstract

Systems and methods for data storage in a non-inclusive cache. An integrated circuit includes a cache that includes a databank with multiple entries configured to store respective cache lines and an array of cache tags. Each cache tag includes a data pointer that points to an entry in the databank. A method includes allocating the entry in the databank to the cache including the array of cache tags from amongst multiple caches in the integrated circuit by writing the data pointer to the cache tag in the array of cache tags.

IPC Classes  ?

  • G06F 12/0811 - Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
  • G06F 12/0815 - Cache consistency protocols
  • G06F 12/0831 - Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
  • G06F 12/0846 - Cache with multiple tag or data arrays being simultaneously accessible
  • G06F 12/121 - Replacement control using replacement algorithms

66.

Variable Depth Pipeline for Error Correction

      
Application Number 18527215
Status Pending
Filing Date 2023-12-01
First Publication Date 2024-06-06
Owner SiFive, Inc. (USA)
Inventor
  • Terpstra, Wesley Waylon
  • Gouldey, Eric Andrew

Abstract

Systems and methods are disclosed for variable depth pipelines for error correction. For example, some methods may include changing the depth of a pipeline in response to an error signal from a stage of the pipeline. Changing the depth of the pipeline may include routing signals from the stage of the pipeline that resulted in the error signal through an error correction stage of the pipeline to a next stage of the pipeline that previously received output signals from the stage of the pipeline that resulted in the error signal. The methods may include continuing to route signals through the error correction stage of the pipeline to the next stage of the pipeline for multiple clock cycles until a pipeline bubble event is detected.

IPC Classes  ?

  • G06F 11/07 - Responding to the occurrence of a fault, e.g. fault tolerance

67.

Downgrading a permission associated with data stored in a cache

      
Application Number 18132572
Grant Number 12204462
Status In Force
Filing Date 2023-04-10
First Publication Date 2024-06-06
Grant Date 2025-01-21
Owner SiFive, Inc. (USA)
Inventor
  • Klinglesmith, Michael
  • Gouldey, Eric Andrew
  • Terpstra, Wesley Waylon

Abstract

Cache circuitry may be configured to receive a first message to downgrade a permission associated with data stored in a current level cache. For example, the current level cache could be a level two (L2) cache. The cache circuitry could receive the first message from a processor core having a level one (L1) cache. The cache circuitry may forward the first message to a higher level cache. For example, the higher level cache could be a level three (L3) cache. The cache circuitry may downgrade the permission associated with data stored in the current level cache based on receiving a second message from the higher level cache. The cache circuitry may forward the first message before receiving the second message and downgrading the permission. The second message may cause downgrade of the permission in multiple caches (e.g., the L1, L2, and L3 caches).

IPC Classes  ?

  • G06F 12/14 - Protection against unauthorised use of memory

68.

Orderability of operations

      
Application Number 18133022
Grant Number 12306772
Status In Force
Filing Date 2023-04-11
First Publication Date 2024-06-06
Grant Date 2025-05-20
Owner SiFive, Inc. (USA)
Inventor
  • Gouldey, Eric Andrew
  • Klinglesmith, Michael
  • Cook, Henry
  • Terpstra, Wesley Waylon

Abstract

A method for managing orders of operations between one or more clients and one or more servers is disclosed. The method includes partitioning addressable regions of logical servers on or within an interconnect link into multiple regions including a first orderable region, and providing logical client an ability to push ordering responsibility within the first orderable region to a server. Over the first orderable region, two request messages for access to memory-mapped sources including two respective operations are transmitted, and the two request messages originate from a same logical client. The ordering responsibility can include a first rule for order of operations between the two request messages.

IPC Classes  ?

  • G06F 13/16 - Handling requests for interconnection or transfer for access to memory bus

69.

Selectable granularity performance monitor

      
Application Number 18476933
Grant Number 12417163
Status In Force
Filing Date 2023-09-28
First Publication Date 2024-06-06
Grant Date 2025-09-16
Owner SiFive, Inc. (USA)
Inventor
  • Van, Richard
  • Wei, Huang Chao

Abstract

Systems and methods are described to collect latency data of transactions traversing a processor using a performance monitor, which uses a bucket timer based on a granule value in a configurable granule counter. The monitor can determine a transaction time for a transaction, which can then be compared to enumerated buckets (where the bucket size is based on the granule value), determine the appropriate bucket, and increment a latency counter associated with the bucket. The monitor can include a saturation mechanism to account for overflow or saturation. The collected data can be read by an external device to generate a histogram to identify potential problems in the processor or processor pipeline.

IPC Classes  ?

  • G06F 11/34 - Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation

70.

Selective transfer of data including a priority byte

      
Application Number 18497436
Grant Number 12386764
Status In Force
Filing Date 2023-10-30
First Publication Date 2024-06-06
Grant Date 2025-08-12
Owner SiFive, Inc. (USA)
Inventor
  • Klinglesmith, Michael
  • Gouldey, Eric Andrew
  • Terpstra, Wesley Waylon

Abstract

A data responder may determine a selection between granting a request for a priority byte to be prioritized for transmission ahead of other bytes via a bus and ignoring the request. Granting the request may include transferring a block of bytes of data across multiple clock cycles with the priority byte transferred in a first clock cycle before other clock cycles of the multiple clock cycles. Ignoring the request may include transferring the block across multiple clock cycles with the priority byte transferred in a clock cycle after the first clock cycle. The data responder may receive the request from a data requestor. The data responder may assert a signal on a wire, connected to the data requestor, to indicate a grant of the request and a transfer of the priority byte in the first clock cycle.

IPC Classes  ?

  • G06F 12/00 - Accessing, addressing or allocating within memory systems or architectures
  • G06F 13/16 - Handling requests for interconnection or transfer for access to memory bus
  • G06F 13/18 - Handling requests for interconnection or transfer for access to memory bus with priority control

71.

Stateful vector group permutation with storage reuse

      
Application Number 18524149
Grant Number 12423099
Status In Force
Filing Date 2023-11-30
First Publication Date 2024-06-06
Grant Date 2025-09-23
Owner SiFive, Inc. (USA)
Inventor Brunie, Nicolas Rémi

Abstract

Systems and methods are disclosed for stateful vector group permutation with storage reuse. For example, some methods may include expanding an element index from a vector of indices to obtain byte indices for respective bytes of a corresponding element; storing the byte indices in corresponding bytes of an intermediate result operand buffer; updating bits in a completion flags buffer to indicate that the corresponding bytes of the intermediate result operand buffer store indices; identifying bytes of an element of the vector of source data pointed to by the element index based on the byte indices stored in the intermediate result operand buffer; overwriting the byte indices in the intermediate result operand buffer with the identified bytes; and, responsive to overwriting the byte indices, updating the corresponding bits in the completion flags buffer to indicate that the corresponding bytes store data to be written to the destination vector.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

72.

Relative age tracking for entries in a buffer

      
Application Number 18527181
Grant Number 12271309
Status In Force
Filing Date 2023-12-01
First Publication Date 2024-06-06
Grant Date 2025-04-08
Owner SiFive, Inc. (USA)
Inventor Terpstra, Wesley Waylon

Abstract

Systems and techniques are disclosed for relative age tracking for entries in a buffer. For example, some techniques may include pre-computing age matrix entries of an age matrix corresponding to invalid entries of a data buffer based on a validity indication (e.g., a valid bit mask), wherein the validity indication identifies valid entries in the data buffer and the age matrix tracks relative ages of the entries in the data buffer; responsive to data being received for storage in the data buffer, selecting an entry corresponding to an index value in the data buffer from among a set of invalid entries of the data buffer; storing the data in the entry corresponding to the index value; and updating the validity indication to indicate that the entry corresponding to the index value is valid.

IPC Classes  ?

  • G06F 12/08 - Addressing or allocationRelocation in hierarchically structured memory systems, e.g. virtual memory systems
  • G06F 12/0802 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

73.

Tracking of Data Readiness for Load and Store Operations

      
Application Number 18328839
Status Pending
Filing Date 2023-06-05
First Publication Date 2024-06-06
Owner SiFive, Inc. (USA)
Inventor Wu, Yueh Chi

Abstract

A method for tracking of data readiness for load and store operations is disclosed. The method includes establishing a Load Transfer Buffer (LTB) entry, initializing a write counter configured to track a number or progress of write data that are expected to update the LTB entry, and tracking the number or progress of the write data that are expected to update the LTB entry. The tracking can include setting, in the write counter, the number of the write data that are expected to update the LTB entry, maintaining, until a next respective write data arrives to the LTB entry a current value corresponding to a respective number of write data left to update the LTB entry, and after receiving the next respective write data, adjusting the write counter to reflect a respective number of write data left to update the LTB entry.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

74.

Out-of-order vector iota calculations

      
Application Number 18337652
Grant Number 12223323
Status In Force
Filing Date 2023-06-20
First Publication Date 2024-06-06
Grant Date 2025-02-11
Owner SiFive, Inc. (USA)
Inventor
  • Wu, Yueh Chi
  • Brunie, Nicolas Rémi

Abstract

A method for executing vector iota (viota) operation is disclosed. The method includes fetching a viota instruction, decoding the viota instruction into multiple viota micro-operations (uops), computing a first element viota value of a respective viota uop, determining a respective last element viota value of the respective viota uop based on the first element viota value of the respective uop, and writing the respective last element viota value of the respective viota uop to an allocated physical register. Each viota uop of the multiple viota uops has multiple elements, and each element has a viota value corresponding to a sum of active mask bits of preceding elements of the viota uops. The multiple elements of each viota uop comprise at least a first element that has a starting bit position of a respective uop and a last element that has an ending bit position of the respective uop.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

75.

Cache Coherency State Request Vector Encoding and Use Thereof

      
Application Number 18341091
Status Pending
Filing Date 2023-06-26
First Publication Date 2024-06-06
Owner SIFIVE, INC. (USA)
Inventor
  • Terpstra, Wesley Waylon
  • Gouldey, Eric Andrew
  • Klinglesmith, Michael
  • Cook, Henry

Abstract

A method and apparatus for a cache coherency state request vector is described. A method includes selecting, by a first agent, one or more bits in a cache coherency state request vector, where a selected bit in the cache coherency state request vector indicates an acceptable cache coherency state for a cache block indicated in a request message, transmitting, by the first agent to a second agent, the request message for the cache block, the request message including the cache coherency state request vector, and receiving, by the first agent from the second agent, a response message with a cache coherency response state, wherein the cache coherency response state indicates a cache coherency state responsive to the cache coherency state request vector.

IPC Classes  ?

  • G06F 12/0817 - Cache consistency protocols using directory methods

76.

Transmitting a response with a request and state information about the request

      
Application Number 18341093
Grant Number 12189544
Status In Force
Filing Date 2023-06-26
First Publication Date 2024-06-06
Grant Date 2025-01-07
Owner SiFive, Inc. (USA)
Inventor
  • Klinglesmith, Michael
  • Gouldey, Eric Andrew
  • Terpstra, Wesley Waylon

Abstract

First agent circuitry may receive from a second agent a first request and a first set of one or more bits. The first request may be part of a data operation. The first agent circuitry may transmit to the second agent a message including a first response to the first request, the first set of one or more bits, a second request, and a second set of one or more bits. The second set of one or more bits may be generated by the first agent circuitry to transmit state information about the second request. In some implementations, a set of one or more wires may be generated for transmission of the second set of one or more bits. The first agent circuitry may receive from the second agent a second response to the second request and the second set of one or more bits.

IPC Classes  ?

  • G06F 13/16 - Handling requests for interconnection or transfer for access to memory bus
  • G06F 12/084 - Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
  • G06F 13/42 - Bus transfer protocol, e.g. handshakeSynchronisation

77.

Using renamed registers to support multiple vset{i}vl{i} instructions

      
Application Number 18115970
Grant Number 12260217
Status In Force
Filing Date 2023-03-01
First Publication Date 2024-06-06
Grant Date 2025-03-25
Owner SiFive, Inc. (USA)
Inventor Smith, Josh

Abstract

A method for renaming architectural register, such as control and status register (CSR), is disclosed. The method includes decoding an instruction for updating CSR, updating the CSR based on a respective instruction of the one or more instructions, allocating a unique tag to the instruction in pipeline, and writing the tag into a mapping table for renaming the CSR. The tag can identify the CSR included in the instruction or the updated values of the CSR. The tag can be associated with a unique value. Moreover, the method can employ a First In, First Out (FIFO) queuing technique and virtual bits.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

78.

Stalling issue queue entries until consecutive allocated entries are available for segmented stores

      
Application Number 18115971
Grant Number 12314718
Status In Force
Filing Date 2023-03-01
First Publication Date 2024-06-06
Grant Date 2025-05-27
Owner SiFive, Inc. (USA)
Inventor Smith, Josh

Abstract

A method for performing segmented vector store operations is disclosed. The method includes decoding one or more segmented vector store micro-operations (uops) of segmented vector store instruction in a pipeline, allocating, based on each of the one or more segmented vector store uops, one or more respective store buffer entries in First-in, First-out (FIFO) order, stalling the pipeline until store buffer entries are allocated by all of segmented vector store uops of the segmented vector store instruction, and writing, based on each of the one or more segmented vector store uops, manipulated vector data into multiple store buffer entries.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead

79.

Technologies for interconnect address remapper with event recognition and register management

      
Application Number 18282728
Grant Number 12430132
Status In Force
Filing Date 2022-03-28
First Publication Date 2024-05-16
Grant Date 2025-09-30
Owner SiFive, Inc. (USA)
Inventor
  • Parry, David
  • Barbier, Drew
  • Smith, Josh
  • Solomatnikov, Alexandre
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for a configurable interconnect address remapper with event detection. For example, an integrated circuit can include a processor core configured to execute instructions. The processor core includes region registers defined by a From Address range and a To Address, a register storing a number of regions defined in the integrated circuit, interrupt enable registers associated with each pair of region registers, and event flags associated with each pair of region registers; an interconnection system handling transactions from the processor core; an interconnect address remapper translating an address associated with a transaction using the one or more pair of region registers; and an interrupt controller receiving an interrupt signal from the interconnect address remapper when the interrupt enable registers are enabled and at least one raised event flags when at least one of the one or more pair of region registers matches the transaction address.

IPC Classes  ?

  • G06F 9/32 - Address formation of the next instruction, e.g. by incrementing the instruction counter
  • G06F 13/32 - Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer

80.

Predicting a Vector Length Associated with a Configuration Instruction

      
Application Number 18484128
Status Pending
Filing Date 2023-10-10
First Publication Date 2024-05-16
Owner SiFive, Inc. (USA)
Inventor Burgess, Bradley Gene

Abstract

Prediction circuitry may generate a vector length prediction associated with a configuration instruction prior to completion of execution of the configuration instruction. The vector length prediction may indicate a number of data elements on which a vector instruction will operate. In some implementations, the prediction circuitry can generate the vector length prediction by detecting a repeating pattern of vector lengths associated with earlier executions of the configuration instruction. In some implementations, the prediction circuitry can generate the vector length prediction by detecting decrements of an application vector length by a constant value.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

81.

Event Recording and Notification Architectures

      
Application Number 18497213
Status Pending
Filing Date 2023-10-30
First Publication Date 2024-05-02
Owner SiFive, Inc. (USA)
Inventor Mcnairy, Cameron

Abstract

Systems and methods are disclosed for event recording and notification. For example, an integrated circuit (e.g., a processor) for executing instructions includes multiple event reporting circuitries that are each configured to store context data for one or more detected events, including an event identifier; an event map circuitry configured to control one or more notification channels based on an input event identifier; and an event summarization circuitry configured to: receive event identifiers from a plurality of child nodes, wherein each child node is one of the reporting circuitries or another event summarization circuitry configured to output an event identifier from one of the event reporting circuitries; select a highest priority event identifier from a set of event identifiers currently output by the plurality of child nodes; output the selected event identifier to the event map circuitry; and store a pointer to the child node that output the selected event identifier.

IPC Classes  ?

82.

Selecting an Output as a System Output Responsive to an Indication of an Error

      
Application Number 18500337
Status Pending
Filing Date 2023-11-02
First Publication Date 2024-05-02
Owner SiFive, Inc. (USA)
Inventor Mcnairy, Cameron

Abstract

A first circuitry may be configured to generate a first output based on an input and send an indication responsive to detection of an error while the first output is generated. A second circuitry may be configured to generate a second output based on the input. A wrapper circuitry may be configured to compare the first output and the second output to check correctness by default, and responsive to receipt of the indication, select the second output as a system output without checking for correctness by comparing the first output and the second output. In some implementations, the second circuitry may be configured to send a second indication responsive to detection of a second error while the second output is generated. The wrapper circuitry may be configured to, responsive to receipt of the second indication, ignore the check for correctness.

IPC Classes  ?

83.

Vector instruction cracking after scalar dispatch

      
Application Number 18469008
Grant Number 12340226
Status In Force
Filing Date 2023-09-18
First Publication Date 2024-04-18
Grant Date 2025-06-24
Owner SiFive, Inc. (USA)
Inventor Magnus, Kathlene Rose

Abstract

Apparatus and methods for vector instruction cracking after scalar dispatch are described. An integrated circuit includes a primary pipeline and a vector pipeline. The primary pipeline is configured to determine a type of instruction, responsive to a determination that the instruction is a vector instruction, create a reorder buffer entry in a reorder buffer for the vector instruction prior to out-of-order processing in the primary pipeline, and send the vector instruction to a vector pipeline. The vector pipeline is configured to process the vector instruction.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

84.

ATOMIC MEMORY OPERATIONS FOR ADDRESS TRANSLATION

      
Application Number 18475310
Status Pending
Filing Date 2023-09-27
First Publication Date 2024-03-28
Owner SiFive, Inc. (USA)
Inventor
  • Ingalls, John
  • Waterman, Andrew

Abstract

Systems and methods are disclosed for atomic memory operations for address translation. For example, an integrated circuit (e.g., a processor) for executing instructions includes a memory system including random access memory; a bus connected to the memory system; and an atomic memory operation circuitry configured to receive a request from the bus to access an entry in a page table stored in the memory system, wherein the request includes an indication of whether an instruction that references an address being translated using the entry is a store instruction; access the entry in the page table; responsive to the indication indicating that the instruction is a store instruction, set a dirty bit of the entry in the page table; and transmit contents of the entry on the bus in response to the request.

IPC Classes  ?

  • G06F 12/1009 - Address translation using page tables, e.g. page table structures

85.

Memory Request Combination Indication

      
Application Number 18203901
Status Pending
Filing Date 2023-05-31
First Publication Date 2024-01-18
Owner SiFive, Inc. (USA)
Inventor
  • Gouldey, Eric Andrew
  • Terpstra, Wesley Waylon
  • Waterman, Andrew

Abstract

A processor core may include circuitry that fetches a first instruction followed by a second instruction. The first instruction may be configured to cause a first memory request, and the second instruction may be configured to cause a second memory request. The circuitry may determine that the first memory request is a candidate for combination with the second memory request. Responsive to the determination, the circuitry may send an indication, from the processor core via a bus, that the first memory request is a candidate for combination.

IPC Classes  ?

  • G06F 3/06 - Digital input from, or digital output to, record carriers

86.

Supporting Multiple Vector Lengths with Configurable Vector Register File

      
Application Number 18345007
Status Pending
Filing Date 2023-06-30
First Publication Date 2024-01-18
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for supporting multiple vector lengths with a configurable vector register file. For example, an integrated circuit (e.g., a processor) includes a data store configured to store a vector length parameter; a processor core including a vector register, wherein the processor core is configured to: while a first value of the vector length parameter is stored in the data store, store a single architectural register of an instruction set architecture in the vector register; and, while a second value of the vector length parameter is stored in the data store, store multiple architectural registers of the instruction set architecture in respective disjoint portions of the vector register. For example, the integrated circuit may be used to emulate a processor with smaller vector registers for the purpose of migrating a thread to a processor core of the integrated circuit for continued execution.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

87.

Fusion with destructive instructions

      
Application Number 18344986
Grant Number 12417103
Status In Force
Filing Date 2023-06-30
First Publication Date 2024-01-18
Grant Date 2025-09-16
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for fusion with destructive instructions. For example, an integrated circuit (e.g., a processor) for executing instructions includes a fusion circuitry that is configured to detect a sequence of macro-ops stored in a processor pipeline of the processor core, the sequence of macro-ops including a first macro-op identifying a first register as a destination register followed by a second macro-op identifying the first register as both a source register and as a destination register, wherein one or more intervening macro-ops occur between the first macro-op and the second macro-op in the program order; determine a micro-op that is equivalent to the first macro-op followed by the second macro-op; and forward the micro-op to at least one of the one or more execution resource circuitries for execution. For example, the sequence of macro-ops may be detected in a vector dispatch stage of a processor pipeline.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

88.

Trace encoder with event filter

      
Application Number 18123834
Grant Number 12235749
Status In Force
Filing Date 2023-03-20
First Publication Date 2024-01-18
Grant Date 2025-02-25
Owner SiFive, Inc. (USA)
Inventor
  • Ableidinger, Bruce
  • Edgar, Ernest L.

Abstract

A trace circuitry may be configured to receive a selection of one or more types of events possible in a processor core among multiple types of events. The trace circuitry may generate a message including trace information when an event corresponding to the selection occurs in the processor core. The trace information may include an address associated with the event and an indication of the type of event and/or cause for why the event occurred. In some implementations, the trace circuitry may use an event filter to pass events corresponding to the one or more types of events that are selected and block events corresponding to one or more types of events that are not selected. In some implementations, the trace circuitry may generate timestamps based on events to enable measurements between the events.

IPC Classes  ?

  • G06F 11/34 - Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation
  • G06F 11/07 - Responding to the occurrence of a fault, e.g. fault tolerance
  • G06F 11/30 - Monitoring

89.

Efficient processing of masked memory accesses

      
Application Number 18023948
Grant Number 12437121
Status In Force
Filing Date 2021-09-01
First Publication Date 2024-01-11
Grant Date 2025-10-07
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste

Abstract

Disclosed herein are systems and methods for processing masked memory accesses including handling fault exceptions and checking memory attributes of memory region(s) to be accessed. Implementations perform a two-level memory protection violation scheme for masked vector memory instructions. The first level memory check ignores mask information associated with a masked vector memory instruction and operates on a memory footprint associated with the masked vector memory instruction. If a memory protection violation is detected or speculative access is denied with respect to the memory footprint, a second level memory check evaluates mask information at a vector element level to determine whether a fault exception should be raised. If a mask bit for a vector element is set and a memory violation is detected, then a fault exception is raised for the masked vector memory instruction. If a mask bit is not set, execution of the masked vector memory instruction can continue.

IPC Classes  ?

  • G06F 21/78 - Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

90.

Translation lookaside buffer (TLB) prefetcher with multi-level TLB prefetches and feedback architecture

      
Application Number 18203186
Grant Number 12399837
Status In Force
Filing Date 2023-05-30
First Publication Date 2023-12-28
Grant Date 2025-08-26
Owner SiFive, Inc. (USA)
Inventor
  • Alexander, Benoy
  • Ingalls, John
  • Wani, Mohit Gopal

Abstract

Described is a translation lookaside buffer (TLB) prefetcher with multi-level TLB prefetches and feedback architecture. A processing system includes two or more translation lookaside buffer (TLB) levels, each TLB level including a miss queue, and a TLB prefetcher connected to each of the two or more TLB levels. The TLB prefetcher configured to receive feedback from the miss queue at each TLB level for previously sent TLB prefetches and control number of TLB prefetches sent for a trained TLB entry to each TLB level of the two or more TLB levels based on the feedback.

IPC Classes  ?

  • G06F 12/10 - Address translation
  • G06F 12/1036 - Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation

91.

Load-store pipeline selection for vectors

      
Application Number 18141463
Grant Number 12086067
Status In Force
Filing Date 2023-04-30
First Publication Date 2023-11-16
Grant Date 2024-09-10
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for load-store pipeline selection for vectors. For example, an integrated circuit (e.g., a processor) for executing instructions includes an L1 cache that provides an interface to a memory system; an L2 cache connected to the L1 cache that implements a cache coherency protocol with the L1 cache; a first store unit configured to write data to the memory system via the L1 cache; a second store unit configured to bypass the L1 cache and write data to the memory system via the L2 cache; and a store pipeline selection circuitry configured to: identify an address associated with a first beat of a store instruction with a vector argument; select between the first store unit and the second store unit based on the address associated with the first beat of the store instruction; and dispatch the store instruction to the selected store unit.

IPC Classes  ?

  • G06F 12/0855 - Overlapped cache accessing, e.g. pipeline
  • G06F 12/0815 - Cache consistency protocols
  • G06F 12/0875 - Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
  • G06F 12/0897 - Caches characterised by their organisation or structure with two or more cache hierarchy levels

92.

Vector Gather with a Narrow Datapath

      
Application Number 18141466
Status Pending
Filing Date 2023-04-30
First Publication Date 2023-11-16
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for vector gather with a narrow datapath. For example, some methods may include reading b bits of a vector of indices into a first operand buffer; reading b bits of the vector of source data into a second operand buffer, including an element indexed by a first index stored in the first operand buffer; checking whether other indices stored in the first operand buffer point to elements of the vector of source data stored in the second operand buffer; during a single clock cycle, copying a plurality of elements stored in the second operand buffer that are pointed to by indices stored in the first operand buffer to a third operand buffer; and updating flags in a completion flags buffer corresponding to those indices to indicate that handling of those indices has completed.

IPC Classes  ?

  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

93.

FLOATING-POINT MULTIPLIER USING ZERO COUNTERS

      
Application Number US2023016489
Publication Number 2023/215048
Status In Force
Filing Date 2023-03-28
Publication Date 2023-11-09
Owner SIFIVE, INC. (USA)
Inventor Brunie, Nicolas Rémi

Abstract

One or more zero counters may be configured to count trailing zeros of significands of operands to produce a trailing zero count from the first operand and the second operand. A round-bit position circuit may be configured to determine a predicted round-bit position of an expected significand multiplier result. The predicted round-bit position may be used to determine a trailing bit count indicating a number of bits that are less significant than a round-bit in the predicted round-bit position. A compare circuit may be configured to compare the trailing zero count to the trailing bit count to determine whether the expected significand multiplier result will cause a tie when rounding the expected significand multiplier result.

IPC Classes  ?

  • G06F 7/487 - MultiplyingDividing
  • G06F 7/499 - Denomination or exception handling, e.g. rounding or overflow

94.

FLOATING-POINT MULTIPLIER USING ZERO COUNTERS

      
Application Number 18191095
Status Pending
Filing Date 2023-03-28
First Publication Date 2023-11-09
Owner SiFive, Inc. (USA)
Inventor Brunie, Nicolas Rémi

Abstract

One or more zero counters may be configured to count trailing zeros of significands of operands to produce a trailing zero count from the first operand and the second operand. A round-bit position circuit may be configured to determine a predicted round-bit position of an expected significand multiplier result. The predicted round-bit position may be used to determine a trailing bit count indicating a number of bits that are less significant than a round-bit in the predicted round-bit position. A compare circuit may be configured to compare the trailing zero count to the trailing bit count to determine whether the expected significand multiplier result will cause a tie when rounding the expected significand multiplier result.

IPC Classes  ?

95.

CONFIGURING A COMPONENT OF A PROCESSOR CORE BASED ON AN ATTRIBUTE OF AN OPERATING SYSTEM PROCESS

      
Application Number 18191074
Status Pending
Filing Date 2023-03-28
First Publication Date 2023-10-19
Owner SiFive, Inc. (USA)
Inventor
  • Asanovic, Krste
  • Walmsley, Paul
  • Ingalls, John

Abstract

A first operating system process may be identified. The first operating system process may have instructions configured to be executed by a processor core. A first set of parameters may be determined based on an attribute of the first operating system process. For example, the first set of parameters may be determined based on an address space identifier, an address space stored in a page table base register, a virtual machine identifier, or a combination thereof. A component of the processor core may be configured using the first set of parameters. For example, one or more components, such as a branch predictor, a prefetcher, a dispatch unit, a vector unit, a clock controller, and the like, may be configured using the first set of parameters.

IPC Classes  ?

96.

CONFIGURING A COMPONENT OF A PROCESSOR CORE BASED ON AN ATTRIBUTE OF AN OPERATING SYSTEM PROCESS

      
Application Number US2023016858
Publication Number 2023/200602
Status In Force
Filing Date 2023-03-30
Publication Date 2023-10-19
Owner SIFIVE, INC. (USA)
Inventor
  • Asanovic, Krste
  • Walmsley, Paul
  • Ingalls, John

Abstract

A first operating system process may be identified. The first operating system process may have instructions configured to be executed by a processor core. A first set of parameters may be determined based on an attribute of the first operating system process. For example, the first set of parameters may be determined based on an address space identifier, an address space stored in a page table base register, a virtual machine identifier, or a combination thereof. A component of the processor core may be configured using the first set of parameters. For example, one or more components, such as a branch predictor, a prefetcher, a dispatch unit, a vector unit, a clock controller, and the like, may be configured using the first set of parameters.

IPC Classes  ?

  • G06F 9/445 - Program loading or initiating
  • G06F 11/34 - Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation
  • G06F 21/53 - Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity, buffer overflow or preventing unwanted data erasure by executing in a restricted environment, e.g. sandbox or secure virtual machine

97.

Memory protection for vector operations

      
Application Number 18024262
Grant Number 12314191
Status In Force
Filing Date 2021-09-01
First Publication Date 2023-10-05
Grant Date 2025-05-27
Owner SiFive, Inc. (USA)
Inventor
  • Asanovic, Krste
  • Waterman, Andrew

Abstract

Systems and methods are disclosed for memory protection for vector operations. For example, a method includes fetching a vector memory instruction using a processor core including a pipeline configured to execute instructions, including constant-stride vector memory instructions; partitioning a vector that is identified by the vector memory instruction into a subvector of a maximum length, greater than one, and one or more additional subvectors with lengths less than or equal to the maximum length; checking, using a memory protection circuit, whether accessing elements of the subvector will cause a memory protection violation; and accessing the elements of the subvector before checking, using the memory protection circuit, whether accessing elements of one of the one or more additional subvectors will cause a memory protection violation.

IPC Classes  ?

  • G06F 21/00 - Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode
  • G06F 12/14 - Protection against unauthorised use of memory
  • G06F 21/62 - Protecting access to data via a platform, e.g. using keys or access control rules
  • H04L 29/06 - Communication control; Communication processing characterised by a protocol

98.

Memory protection for gather-scatter operations

      
Application Number 18024208
Grant Number 12253959
Status In Force
Filing Date 2021-09-01
First Publication Date 2023-09-28
Grant Date 2025-03-18
Owner SiFive, Inc. (USA)
Inventor
  • Waterman, Andrew
  • Asanovic, Krste

Abstract

Systems and methods are disclosed for memory protection for memory protection for gather-scatter operations. For example, an integrated circuit may include a processor core; a memory protection circuit configured to check for memory protection violations with a protection granule; and an index range circuit configured to: memoize a maximum value and a minimum value of a tuple of indices stored in a vector register of the processor core as the tuple of indices is written to the vector register; determine a range of addresses for a gather-scatter memory instruction that takes the vector register as a set of indices based on a base address of a vector in memory, the memoized minimum value, and the memoized maximum value; and check, using the memory protection circuit during a single clock cycle, whether accessing elements of the vector within the range of addresses will cause a memory protection violation.

IPC Classes  ?

  • G06F 12/14 - Protection against unauthorised use of memory
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

99.

Technologies for prediction-based register renaming

      
Application Number 18017792
Grant Number 12468540
Status In Force
Filing Date 2021-07-23
First Publication Date 2023-09-28
Grant Date 2025-11-11
Owner SiFive, Inc. (USA)
Inventor
  • Asanovic, Krste
  • Waterman, Andrew

Abstract

Systems and methods are disclosed for register renaming. For example, an integrated circuit is described that includes a first cluster including a first set of physical registers and a first execution resource circuit, wherein the inputs for operations of the first execution resource circuit are of a first data type; a second cluster including a second set of physical registers and a second execution resource circuit, wherein the inputs for operations of the second execution resource circuit are of a second data type that is different than the first data type; and a register renaming circuit configured to: determine a data type prediction for a result of a first instruction that will be mapped to a first logical register; and, based on the data type prediction matching the first data type, rename the first logical register to be mapped to a physical register of the first set of physical registers.

IPC Classes  ?

  • G06F 9/38 - Concurrent instruction execution, e.g. pipeline or look ahead
  • G06F 9/30 - Arrangements for executing machine instructions, e.g. instruction decode

100.

INTEGRATED CIRCUIT DESIGN USING METADATA

      
Application Number US2023010580
Publication Number 2023/163814
Status In Force
Filing Date 2023-01-11
Publication Date 2023-08-31
Owner SIFIVE, INC. (USA)
Inventor
  • Chen, Albert Pengju
  • Izraelevitz, Adam Moshe

Abstract

An integrated circuit design is generated for an integrated circuit. The integrated circuit design includes an instance of a module description that describes a functional operation of a module. The integrated circuit design is encoded in an intermediate representation, IR, data structure (702). A parameter comprising metadata associated with the instance is received (704). A compiler compiles the IR data structure to produce a register-transfer level, RTL, data structure (706). The RTL data structure encodes a logic description associated with the instance. Compiling the IR data structure includes associating the parameter comprising metadata with the logic description (708).

IPC Classes  ?

  • G06F 30/327 - Logic synthesisBehaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
  • G06F 30/323 - Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
  1     2        Next Page