WO2022192017A1 - Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions - Google Patents

Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions Download PDF

Info

Publication number
WO2022192017A1
WO2022192017A1 PCT/US2022/018060 US2022018060W WO2022192017A1 WO 2022192017 A1 WO2022192017 A1 WO 2022192017A1 US 2022018060 W US2022018060 W US 2022018060W WO 2022192017 A1 WO2022192017 A1 WO 2022192017A1
Authority
WO
WIPO (PCT)
Prior art keywords
hardware module
register
hardware
module
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/US2022/018060
Other languages
French (fr)
Inventor
Harikrishna Madadi Reddy
Srikanth Alaparthi
Olof Johansson
Alexander MASTRO
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meta Platforms Inc
Original Assignee
Meta Platforms Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Meta Platforms Inc filed Critical Meta Platforms Inc
Priority to CN202280019737.0A priority Critical patent/CN117043747A/en
Publication of WO2022192017A1 publication Critical patent/WO2022192017A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

Definitions

  • the present disclosure is generally directed to systems and methods for facilitating efficient hardware-firmware interactions.
  • FW prepares the programming sequence and programs hardware (HW) in order to achieve a specific functionality. Preparing this sequence, programming the sequence to HW, waiting for HW completion, and monitoring the HW state for any additional information may involve context switching in FW and cause high latency in the processing time.
  • a system comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
  • the non-register-write operations may comprise at least one of: a register read operation; a wait-for-done operation; or a debug operation.
  • the special marker may comprise an address of a predefined special memory register and an operation code.
  • the firmware module may prepare a list of commands stored in memory; the firmware module provides at least one address pointer and size for the list of commands to the hardware module; and the hardware module fetches the list of commands via the at least one address pointer and size.
  • the firmware module may provide, to the hardware module, a plurality of address pointers that each point to a different segment of a single command in the list of commands.
  • the hardware module may store the at least one address pointer to a memory register within the plurality of memory registers.
  • the firmware module may provide the at least one address pointer to the hardware module repeatedly during different points in time.
  • the hardware module may receive a command to perform a wait-for-done operation; the hardware module pauses operating until detecting that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed.
  • the command to perform the wait-for-done operation may comprise a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
  • the hardware module may receive a command to perform a terminate operation; and in response, the hardware module: pauses operating until detecting that at least one hardware thread has completed; drains prefetched data; empties a command queue; and confirms a completion of the terminate operation to the firmware module.
  • the hardware module may receive a command from the firmware to perform a debug operation; and in response, the hardware module writes data to memory that is accessible to the firmware.
  • the hardware module may store a timeout value that, when reached, prompts the hardware module to: pause operating; and send a timeout message to the firmware module.
  • the hardware module may store, in at least one memory register within the plurality of memory registers, a current status of the hardware module.
  • a computer-implemented method comprising: identifying a hardware module that: directly reads from and writes to a plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; sending, by a firmware module, a command to the hardware module directing the hardware module to perform a non-register-write operation via the special marker; receiving, by the hardware module, the command directing the hardware module to perform the non-register-write operation via the special marker; and performing, by the hardware module, in response to receiving the command, the non-register-write operation signified by the special marker.
  • the non-register-write operation may comprise a register read operation; and the hardware module performs the register read operation by reading data from a memory register within the plurality of memory registers.
  • the non-register-write operation may comprise a wait- for-done operation; the hardware module performs the wait-for-done operation by pausing operating until the hardware module detects that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed.
  • the command to perform the wait-for-done operation may comprise a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
  • the non-register-write operation may comprise a debug operation; and the hardware module performs the debug operation by writing data to memory that is accessible to the firmware.
  • the non-register-write operation may comprise a terminate operation; and the hardware module performs the terminate operation by: pausing operating until detecting that at least one hardware thread has completed; draining prefetched data; emptying a command queue; and confirming a completion of the terminate operation to the firmware module.
  • an apparatus comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a hardware element configured to execute a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
  • FIG. 1 is a block diagram of an exemplary system for facilitating efficient hardware-firmware interactions.
  • FIG. 2 is a flow diagram of an exemplary method for facilitating efficient hardware-firmware interactions.
  • FIG. 3 is a block diagram of a command direct memory access module.
  • FIG. 4 is a block diagram of a read engine for a command direct memory access module.
  • FIG. 5 is a block diagram of a write engine fora command direct memory access module.
  • FIG. 6 is a block diagram of a read engine for a command direct memory access module.
  • FIG. 7 is a block diagram of a command direct memory access module performing multithreaded operations.
  • FIG. 8 is an additional block diagram of a command direct memory access module performing multithreaded operations.
  • FIG. 9 is a flow diagram of a method for a command direct memory access module to execute a terminate command.
  • FW prepares the programming sequence and programs hardware (HW) in order to achieve a specific functionality. Preparing this sequence, programming the sequence to HW, waiting for HW completion, and monitoring the HW state for any additional information may involve context switching in FW and cause high latency in the processing time. The latency may become critical and significant in throughput driven designs where multiple HW threads work in pipeline fashion to achieve a common task, such as a transcoder that decodes a video sequence of a particular format and encodes the video sequence in different formats and resolutions.
  • the present disclosure is generally directed to systems and methods for facilitating efficient hardware-firmware interactions.
  • the systems described herein offload some of this from FW and implement some of the programming features in HW.
  • a new HW module called command direct memory access (CDMA)
  • CDMA may be added in the transcoder solution or other hardware configuration.
  • a CDMA may support a pointer-to-pointer scheme for basic register programming, a special marker that enables the HW to distinguish between register write operations and special operations (e.g., read, wait, etc.), a wait-for- done command, and/or debug and performance traces. This may enable FW to use dedicated buffers for a programming sequence that is common across frames for a given HW thread. In some embodiments, this system may minimize FW buffer updates (or writes) and/or save command list preparation time.
  • the systems described herein may improve the functioning of a computing device by increasing the speed at which the computing device performs operations. Additionally, the systems described herein may improve the fields of computational efficiency and/or video transcoding by improving the efficiency at which computing devices can execute certain command sequences, such as the command sequences used in video transcoding.
  • FIG. 1 is a block diagram of an exemplary system 100 for facilitating efficient hardware-firmware interaction.
  • a computing device 102 may be configured with memory registers 104(1) through 104(n).
  • a hardware module 106 may perform read and/or write operations on memory registers 104(1) through 104(n).
  • hardware module 106 may be a CDMA that is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations.
  • computing device 102 may include a firmware module 108 that directs hardware module 106 to perform operations at least in part by sending the special marker.
  • computing device 102 may include a hardware element configured to execute firmware module 108.
  • Computing device 102 may represent various types of computing devices including but not limited to personal computing devices (e.g., laptops, desktops, smart phones, etc.), servers, embedded computing devices, and/or smart devices.
  • FIG. 2 is a flow diagram of an exemplary method 200 for facilitating hardware- firmware interactions.
  • the systems described herein may identify a FIW module that directly reads from and writes to a plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations.
  • the term "special marker” may generally refer to any string embedded in a message and/or any formatting of a message that is interpreted by a specially configured hardware module (e.g., a CDMA) as a command other than the default command performed by the hardware module (e.g., register write).
  • the special marker may take a variety of forms.
  • the systems described herein may designate a specific register in CDMA control/status register space and use the address of the designated register as the special marker.
  • the systems described herein may define specific operation codes (opcodes) that each designate a specific operation, such as wait-for-done, terminate, debug, and so forth.
  • a 32-bit address field may be split into 28 bits for the address of the designated register and four bits for opcodes.
  • the systems described herein may perform step 202 in a variety of ways.
  • the systems described herein may identify a CDMA.
  • the term "CDMA" generally refers to any hardware module that is capable of perform register read and write operations and that is configured to interpret a special marker.
  • a CDMA may manage multiple hardware threads.
  • the systems described herein may send, by a FW module, a command to the HW module directing the HW module to perform a non-register-write operation via the special marker.
  • non-register-write operation may generally refer to any operation performed by hardware that does not exclusively consist of writing data to a memory register.
  • a non-register-write operation may include a register read operation, a wait-for-done operation, a terminate operation, and/or a debug operation.
  • the systems described herein may perform step 204 in a variety of ways.
  • FW may send a wait-for-done command to the CDMA.
  • FW may send a terminate command to the CDMA.
  • the systems described herein may receive, by the FIW module, the command directing the FIW module to perform the non-register-write operation via the special marker.
  • the systems described herein may perform step 206 in a variety of ways.
  • the CDMA may read the command from a command queue.
  • the CDMA may check a designated section of memory for commands from FW.
  • the systems describe herein may perform, by the FIW module, in response to receiving the command, the non-register-write operation signified by the special marker.
  • the CDMA may read data, wait for a thread to complete, and/or terminate operations.
  • the CDMA may send debug data to FW.
  • the CDMA may output debugging information into external memory that can be used by FW for performance monitoring, analysis, and/or debugging processes.
  • the CDMA may receive a wait-for-done command and in response, the CDMA may pause operating until detecting that a hardware thread specified by the wait-for-done command has completed.
  • FIG. 3 is a block diagram of an example CDMA 302.
  • CDMA Code Division Multiple Access
  • read/write channel 308 may use an advanced extensible interface (AXI) communication interface to read data from external memory and/or write data to externa memory.
  • read/write channel 310 may use an advanced microcontroller bus (AFIB) interface to read data from memory registers (e.g., the status register) and/or write data to memory registers.
  • AFIB advanced microcontroller bus
  • the systems described herein may use other hardware architecture, interfaces, and/or protocols for write channel 308 and/or read channel 310.
  • write channel 308 and/or read channel 310 may be capable of executing on multiple threads simultaneously and arbiters 312 and/or 314 may allocate access to write channel 308 and/or read channel 310, respectively.
  • CDMA 302 may be configured to execute CDMA threads 304(1) through 304(n).
  • CDMA 302 may be configured to execute twelve threads.
  • CDMA 302 may be functioning as a video transcoder and may have twelve threads that each correspond to a different format and/or a different stage of the transcoding process.
  • CDMA 302 may periodically update a control/status register (CSR) 306 with the current status of CDMA 302.
  • CSR control/status register
  • CDMA 302 may maintain internally the position within each buffer and provide that information at CSR 306.
  • data in CSR 306 may indicate the address of the current command being executed and/or a pointer in CSR 306 may indicate the position within the current programming sequence buffer.
  • CDMA 302 may receive instructions from FW via one or more designated registers within CSR 306.
  • the systems described herein may support a programming sequence of a thread that is split across multiple physical buffers in memory.
  • a CDMA may access memory 402 based on a command queue 404 that issues commands to a CDMA thread 406.
  • Memory 402 may represent various types of memory, including but not limited to double data rate synchronous dynamic random- access memory (DDR SDRAM) and/or any other suitable type of random-access memory.
  • DDR SDRAM double data rate synchronous dynamic random- access memory
  • memory 402 may include three different buffers that are prepared by FW for access by one or more CDMA threads. In some embodiments, this may enable FW to store all the common programming sequences in one buffer to use these sequences across frames for a given thread as well as across threads.
  • the frame width and height for a given video sequence may be unchanged across multiple stages of transcoding.
  • the debug programming sequence and/or reset/clear mechanisms may be constant across frames.
  • FW may store each sequence in one dedicated buffer. By storing reused sequences in buffers in memory, the systems described herein may prevent FW from having to re-program the buffers repeatedly.
  • FW may provide an address pointer and size for the list of commands stored in command queue 404 and the CDMA may fetch the list of commands via the address pointer and size.
  • the FW may provide the address pointer and size repeatedly, as the buffer may include instructions that are referenced repeatedly, such as the debug programming sequence, clock sequence, reset sequence, and/or interrupt clear sequence.
  • FW may provide all the pointers to the CDMA through a CSR.
  • the CDMA may provide control to FW to push an enable-interrupt command into the command queue. When this command is received, the CDMA may generate an interrupt after the processing of the corresponding buffer.
  • FIG. 5 is a block diagram of an example write engine for a CDMA.
  • the write engine may only be active if the CDMA is executing register read operations.
  • the CDMA may issue the read request to memory registers through AFIB to collect data, combine the ⁇ address, data ⁇ pairs to match bus width, then write the data out in bursts to DDR through AXI.
  • a CDMA 504 may write to a memory 502.
  • CDMA 504 may write data in a variety of formats. For example, CDMA 504 may be configured to transcode videos into different formats.
  • CDMA 504 may include write engines 506(1) through 506(n) that each correspond to a format from formats 512(1) through 512(n). In some embodiments, write engines 506(1) through 506(n) may have resources allocated by an arbiter 510 that controls access to direct memory access 508. In one embodiment, CDMA 504 may use an AHB interface to read the corresponding registers and then write the address and data pair to memory 502 via an AXI interface. In some examples, FW may provide one write address per thread for a given CDMA session and CDMA 504 may continue to write the data in that location. In some embodiments, each CDMA thread may have one associated write address for FW to program. In some examples, once CDMA 504 receives an opcode indicating that the last data has been received, CDMA 504 may flush out any partial data to memory 502 and/or returns write-done interrupt to FW.
  • FIG. 6 is a block diagram of a read engine for a CDMA.
  • a CDMA Code Division Multiple Access
  • CDMA 608 may read from a read buffer 604 in memory 602 and/or write to a write buffer 606 in memory 602. In some embodiments, CDMA 608 may read from and/or write to a local CDMA buffer 610. For example, CDMA 608 may read and/or process a first set of data at a time 612, a second set of data at a time 614, and/or a third set of data at a time 616. Once local CDMA buffer 610 is full and/or CDMA 608 has received a special marker instructing CDMA 608 to write all data, CDMA 608 may write the data in local CDMA buffer 610 to write buffer 606 in memory 602.
  • FW may read three registers after each wait-for- done instruction and may finish the session after three frames. In this example, there may be a total of nine register reads and the amount of data written to memory 602 may be 72 bytes.
  • the systems described herein may use a sequence identifier (ID) inserted in the special marker to facilitate cross thread dependency and/or efficiency within a single thread.
  • ID may be represented as a continuously incrementing eight bit value.
  • FW may prepare a scalar 704 (e.g., an Xcoder scalar) for processing three frames through a CDMA with a wait-for-done marker between frames.
  • the scalar thread ID may be three, so the CDMA may use CDMA thread three.
  • the CDMA may send the final interrupt to FW indicating that processing is done.
  • each sequence identifier may be incremented for each done command so that other threads may check the sequence identifier to determine the status of the thread.
  • sequence ID 714 for scalar 704 may be initially set to one, increment to two, and then increment to three as each frame is completed.
  • FW may receive only one interrupt for three frames processed using a CDMA system, reducing the latency compared systems without a CDMA where FW may receive three interrupts, one after each scalar frame is processed.
  • the main challenge of cross thread dependency modeling may be the variable processing times of each thread. Some of the threads may finish faster than others, making the synchronization difficult.
  • the systems described herein may use a sequence ID.
  • the systems described herein may store the sequence ID for each scalar in the corresponding CDMA thread.
  • the thread may compare the thread's own wait- sequence-ID against the stored value from the master thread and may proceed as long as the wait-sequence-ID is greater than or equal to the stored sequence ID.
  • a CDMA may handle encode (ENC), bit stream (BS), and/or quality metrics (QM) dependent threads.
  • ENC encode
  • BS bit stream
  • QM quality metrics
  • Each done signal from an ENC thread may trigger the processing of the frame by the BS and QM.
  • ENC 802 may finish processing a frame and update a sequence ID 808. Based on this update, at time 814, BS 804 and/or QM 806 may begin processing that frame. Meanwhile, ENC 802 may begin processing a new frame.
  • BS 804 and/or QM 806 may process that frame while ENC 802 moves on to a new frame.
  • BS 804 may only start processing a new frame if two conditions are met: BS 804 has finished processing the previous frame and ENC 802 has finished processing the new frame.
  • the systems described herein may check the current sequence ID for both BS 804 and ENC 802 to determine whether BS 804 is ready to begin processing a new frame.
  • the CDMA when the CDMA is processing BS 804, the CDMA may identify the wait-for-done marker for ENC 802. The CDMA may internally compare the stored value from ENC 802 to check if it is greater than or equal to the wait-for-done marker and may wait until that condition is met before programming BS 804. In some examples, ENC 802 may not have to wait at each done message for the done to be sampled by all dependent threads. In this example, each thread with variable processing times may not impact other threads. [0054] In some embodiments, a CDMA may terminate processing when certain conditions are met. For example, the CDMA may receive a terminate command from FW. FIG. 9 is a flow diagram of an example method for a CDMA to execute a terminate command.
  • the systems described herein may read the CDMA queue status. If the queue is empty, at step 912, the systems described herein may send a new command or end processing. If the queue is not empty, at step 906, the systems described herein may set a terminate bit to equal one. If the terminate is not complete, the systems described herein may wait. For example, the systems described herein may wait for one or more hardware threads to complete. In some embodiments, the systems described herein may drain prefetched data and/or empty the queue. If the terminate is complete, the systems described herein may, at step 910, set the terminate bit equal to zero. In some embodiments, the CDMA may send a message to FW confirming completion of the terminate operation. The systems described herein may then proceed to step 912 and send a new command or end processing.
  • a CDMA may timeout under certain conditions.
  • a CDMA may wait for completion from the corresponding HW thread.
  • FW may enable timeout behavior and program a timeout value.
  • a CDMA thread may generate a timeout message to send to FW and wait in the same state until receiving a message from FW.
  • FW may continue to wait after receiving the timeout message or may issue a terminate command to the CDMA.
  • the systems and methods described herein may improve the efficiency of various computing processes, such as video transcoding, by using a special marker to communicate with a CDMA that receives commands from FW and reads and writes to registers.
  • a special marker to communicate with a CDMA that receives commands from FW and reads and writes to registers.
  • the systems described herein may eliminate redundant iterations of programming that same information into buffers by FW in between different sequences.
  • the systems described herein may direct the CDMA via a special marker with different opcodes for different operations, such as debug, terminate, and wait-for-done.
  • Using a wait-for-done command with a sequence ID that specifies a thread may enable the systems described herein to facilitate cross-thread dependency by maintaining and transmitting information about the current status of each thread, enabling threads to wait only for relevant other threads to finish processing rather than having to wait for all threads.
  • a system for facilitating efficient hardware-firmware interactions may include (i) a group of memory registers, (ii) a hardware module that directly reads from and writes to the memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, and (iii) a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
  • Example 2 The system of example 1, where the non-register-write operations include at least one of a register read operation, a wait-for-done operation, and/or a debug operation.
  • Example 3 The system of examples 1-2 may further include an address of a predefined special memory register and an operation code.
  • Example 4 The system of examples 1-3, where the firmware module prepares a list of commands stored in memory, the firmware module provides at least one address pointer and size for the list of commands to the hardware module, and the hardware module fetches the list of commands via the at least one address pointer and size.
  • Example 5 The system of examples 1-4, where the firmware module provides, to the hardware module, a plurality of address pointers that each point to a different segment of a single command in the list of commands.
  • Example 6 The system of examples 1-5, where the hardware module stores the at least one address pointer to a memory register within the plurality of memory registers.
  • Example 7 The system of examples 1-6, where the firmware module provides the at least one address pointer to the hardware module repeatedly during different points in time.
  • Example 8 The system of examples 1-7, where the hardware module receives a command to perform a wait-for-done operation, the hardware module pauses operating until detecting that a hardware thread has completed, and the hardware module resumes operating in response to detecting that the hardware thread has completed.
  • Example 9 The system of examples 1-8, where the command to perform the wait-for-done operation includes a sequence identifier and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
  • Example 10 The system of examples 1-9, where the hardware module receives a command to perform a terminate operation and, in response, the hardware module pauses operating until detecting that at least one hardware thread has completed, drains prefetched data, empties a command queue, and confirms a completion of the terminate operation to the firmware module.
  • Example 11 The system of examples 1-10, where the hardware module receives a command from the firmware to perform a debug operation and in response, the hardware module writes data to memory that is accessible to the firmware.
  • Example 12 The system of examples 1-11, where the hardware module stores a timeout value that, when reached, prompts the hardware module to pause operating and send a timeout message to the firmware module.
  • Example 13 The system of examples 1-12, where the hardware module stores, in at least one memory register within the plurality of memory registers, a current status of the hardware module.
  • Example 14 A computer-implemented method for facilitating efficient hardware-firmware interactions may include (i) identifying a hardware module that directly reads from and writes to a plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, (ii) sending, by a firmware module, a command to the hardware module directing the hardware module to perform a non-register-write operation via the special marker, (iii) receiving, by the hardware module, the command directing the hardware module to perform the non-register-write operation via the special marker, and (iv) performing, by the hardware module, in response to receiving the command, the non-register-write operation signified by the special marker.
  • Example 15 The computer-implemented method of example 14, where the non-register-write operation includes a register read operation and the hardware module performs the register read operation by reading data from a memory register within the plurality of memory registers.
  • Example 16 The computer-implemented method of examples 14-15, where (i) the non-register-write operation includes a wait-for-done operation, (ii) the hardware module performs the wait-for-done operation by pausing operating until the hardware module detects that a hardware thread has completed, and (iii) the hardware module resumes operating in response to detecting that the hardware thread has completed.
  • Example 17 The computer-implemented method of examples 14-16, where the computer-executable instructions cause the physical processor to the command to perform the wait-for-done operation includes a sequence identifier and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
  • Example 18 The computer-implemented method of examples 14-17, where the non-register-write operation includes a debug operation and the hardware module performs the debug operation by writing data to memory that is accessible to the firmware.
  • Example 19 The computer-implemented method of examples 14-18, where the non-register-write operation includes a terminate operation and the hardware module performs the terminate operation by (i) pausing operating until detecting that at least one hardware thread has completed, (ii) draining prefetched data, (iii) emptying a command queue, and (iv) confirming a completion of the terminate operation to the firmware module.
  • An apparatus may include (i) a plurality of memory registers, (ii) a hardware module that directly reads from and writes to the plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, and (iii) a hardware element configured to execute a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
  • computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein.
  • these computing device(s) may each include at least one memory device and at least one physical processor.
  • the term "memory device” generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer- readable instructions.
  • a memory device may store, load, and/or maintain one or more of the modules described herein.
  • Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.
  • the term "physical processor” generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions.
  • a physical processor may access and/or modify one or more modules stored in the above-described memory device.
  • Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.
  • modules described and/or illustrated herein may represent portions of a single module or application.
  • one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks.
  • one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the computing devices or systems described and/or illustrated herein.
  • One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.
  • one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another.
  • one or more of the modules recited herein may receive image data to be transformed, transform the image data into a data structure that stores user characteristic data, output a result of the transformation to select a customized interactive ice breaker widget relevant to the user, use the result of the transformation to present the widget to the user, and store the result of the transformation to create a record of the presented widget.
  • one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.
  • the term "computer-readable medium” generally refers to any form of device, carrier, or medium capable of storing or carrying computer- readable instructions.
  • Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic- storage media (e.g., solid-state drives and flash media), and other distribution systems.
  • transmission-type media such as carrier waves
  • non-transitory-type media such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic- storage media (e.g., solid-state drives and flash media), and other distribution systems.
  • transmission-type media such as carrier waves
  • non-transitory-type media such as magnetic-storage media

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

A system for facilitating efficient hardware-firmware interactions may include (i) a plurality of memory registers, (ii) a hardware module that directly reads from and writes to the plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, and (iii) a firmware module that directs the hardware module to perform operations at least in part by sending the special marker. Various other methods, systems, and computer-readable media are also disclosed.

Description

APPARATUS, SYSTEMS, AND METHODS FOR FACILITATING EFFICIENT HARDWARE-FIRMWARE INTERACTIONS
TECHNICAL FIELD
[0001] The present disclosure is generally directed to systems and methods for facilitating efficient hardware-firmware interactions.
BACKGROUND OF THE DISCLOSURE
[0002] In many firmware (FW) controlled system designs, FW prepares the programming sequence and programs hardware (HW) in order to achieve a specific functionality. Preparing this sequence, programming the sequence to HW, waiting for HW completion, and monitoring the HW state for any additional information may involve context switching in FW and cause high latency in the processing time.
SUMMARY OF THE DISCLOSURE
[0003] In accordance with a first aspect of the present disclosure, there is provided a system comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
[0004] In some embodiments, the non-register-write operations may comprise at least one of: a register read operation; a wait-for-done operation; or a debug operation. [0005] In some embodiments, the special marker may comprise an address of a predefined special memory register and an operation code.
[0006] In some embodiments, the firmware module may prepare a list of commands stored in memory; the firmware module provides at least one address pointer and size for the list of commands to the hardware module; and the hardware module fetches the list of commands via the at least one address pointer and size.
[0007] In some embodiments, the firmware module may provide, to the hardware module, a plurality of address pointers that each point to a different segment of a single command in the list of commands.
[0008] In some embodiments, the hardware module may store the at least one address pointer to a memory register within the plurality of memory registers.
[0009] In some embodiments, the firmware module may provide the at least one address pointer to the hardware module repeatedly during different points in time.
[0010] In some embodiments, the hardware module may receive a command to perform a wait-for-done operation; the hardware module pauses operating until detecting that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed.
[0011] In some embodiments, the command to perform the wait-for-done operation may comprise a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
[0012] In some embodiments, the hardware module may receive a command to perform a terminate operation; and in response, the hardware module: pauses operating until detecting that at least one hardware thread has completed; drains prefetched data; empties a command queue; and confirms a completion of the terminate operation to the firmware module.
[0013] In some embodiments, the hardware module may receive a command from the firmware to perform a debug operation; and in response, the hardware module writes data to memory that is accessible to the firmware.
[0014] In some embodiments, the hardware module may store a timeout value that, when reached, prompts the hardware module to: pause operating; and send a timeout message to the firmware module.
[0015] In some embodiments, the hardware module may store, in at least one memory register within the plurality of memory registers, a current status of the hardware module.
[0016] In accordance with a further aspect of the present disclosure, there is provided a computer-implemented method comprising: identifying a hardware module that: directly reads from and writes to a plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; sending, by a firmware module, a command to the hardware module directing the hardware module to perform a non-register-write operation via the special marker; receiving, by the hardware module, the command directing the hardware module to perform the non-register-write operation via the special marker; and performing, by the hardware module, in response to receiving the command, the non-register-write operation signified by the special marker.
[0017] In some embodiments, the non-register-write operation may comprise a register read operation; and the hardware module performs the register read operation by reading data from a memory register within the plurality of memory registers.
[0018] In some embodiments, the non-register-write operation may comprise a wait- for-done operation; the hardware module performs the wait-for-done operation by pausing operating until the hardware module detects that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed.
[0019] In some embodiments, the command to perform the wait-for-done operation may comprise a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
[0020] In some embodiments, the non-register-write operation may comprise a debug operation; and the hardware module performs the debug operation by writing data to memory that is accessible to the firmware.
[0021] In some embodiments, the non-register-write operation may comprise a terminate operation; and the hardware module performs the terminate operation by: pausing operating until detecting that at least one hardware thread has completed; draining prefetched data; emptying a command queue; and confirming a completion of the terminate operation to the firmware module.
[0022] In accordance with a further aspect of the present disclosure, there is provided an apparatus comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a hardware element configured to execute a firmware module that directs the hardware module to perform operations at least in part by sending the special marker. [0023] It will be appreciated that any features described herein as being suitable for incorporation into one or more aspects or embodiments of the present disclosure are intended to be generalizable across any and all aspects and embodiments of the present disclosure. Other aspects of the present disclosure can be understood by those skilled in the art in light of the description, the claims, and the drawings of the present disclosure. The foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0024] The accompanying drawings illustrate a number of exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the instant disclosure.
[0025] FIG. 1 is a block diagram of an exemplary system for facilitating efficient hardware-firmware interactions.
[0026] FIG. 2 is a flow diagram of an exemplary method for facilitating efficient hardware-firmware interactions.
[0027] FIG. 3 is a block diagram of a command direct memory access module.
[0028] FIG. 4 is a block diagram of a read engine for a command direct memory access module.
[0029] FIG. 5 is a block diagram of a write engine fora command direct memory access module.
[0030] FIG. 6 is a block diagram of a read engine for a command direct memory access module.
[0031] FIG. 7 is a block diagram of a command direct memory access module performing multithreaded operations.
[0032] FIG. 8 is an additional block diagram of a command direct memory access module performing multithreaded operations.
[0033] FIG. 9 is a flow diagram of a method for a command direct memory access module to execute a terminate command.
[0034] Throughout the drawings, identical reference characters and descriptions indicate similar, but not necessarily identical, elements. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particularforms disclosed. Rather, the instant disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.
[0035] Features from any of the embodiments described herein may be used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.
DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS [0036] In many firmware (FW) controlled system designs, FW prepares the programming sequence and programs hardware (HW) in order to achieve a specific functionality. Preparing this sequence, programming the sequence to HW, waiting for HW completion, and monitoring the HW state for any additional information may involve context switching in FW and cause high latency in the processing time. The latency may become critical and significant in throughput driven designs where multiple HW threads work in pipeline fashion to achieve a common task, such as a transcoder that decodes a video sequence of a particular format and encodes the video sequence in different formats and resolutions.
[0037] The present disclosure is generally directed to systems and methods for facilitating efficient hardware-firmware interactions. In order to minimize FW context switching and latency in processing times, the systems described herein offload some of this from FW and implement some of the programming features in HW. In one embodiment, a new HW module, called command direct memory access (CDMA), may be added in the transcoder solution or other hardware configuration. In some examples, a CDMA may support a pointer-to-pointer scheme for basic register programming, a special marker that enables the HW to distinguish between register write operations and special operations (e.g., read, wait, etc.), a wait-for- done command, and/or debug and performance traces. This may enable FW to use dedicated buffers for a programming sequence that is common across frames for a given HW thread. In some embodiments, this system may minimize FW buffer updates (or writes) and/or save command list preparation time.
[0038] In some embodiments, the systems described herein may improve the functioning of a computing device by increasing the speed at which the computing device performs operations. Additionally, the systems described herein may improve the fields of computational efficiency and/or video transcoding by improving the efficiency at which computing devices can execute certain command sequences, such as the command sequences used in video transcoding.
[0039] In some embodiments, the systems described herein may facilitate efficient hardware-firmware interaction. FIG. 1 is a block diagram of an exemplary system 100 for facilitating efficient hardware-firmware interaction. In one embodiment, and as will be described in greater detail below, a computing device 102 may be configured with memory registers 104(1) through 104(n). In some embodiments, a hardware module 106 may perform read and/or write operations on memory registers 104(1) through 104(n). In one example, hardware module 106 may be a CDMA that is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations. In one embodiment, computing device 102 may include a firmware module 108 that directs hardware module 106 to perform operations at least in part by sending the special marker. In some embodiments, computing device 102 may include a hardware element configured to execute firmware module 108. Computing device 102 may represent various types of computing devices including but not limited to personal computing devices (e.g., laptops, desktops, smart phones, etc.), servers, embedded computing devices, and/or smart devices. [0040] FIG. 2 is a flow diagram of an exemplary method 200 for facilitating hardware- firmware interactions. In some examples, at step 202, the systems described herein may identify a FIW module that directly reads from and writes to a plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations. The term "special marker" may generally refer to any string embedded in a message and/or any formatting of a message that is interpreted by a specially configured hardware module (e.g., a CDMA) as a command other than the default command performed by the hardware module (e.g., register write). The special marker may take a variety of forms. For example, the systems described herein may designate a specific register in CDMA control/status register space and use the address of the designated register as the special marker. In some examples, the systems described herein may define specific operation codes (opcodes) that each designate a specific operation, such as wait-for-done, terminate, debug, and so forth. In one embodiment, a 32-bit address field may be split into 28 bits for the address of the designated register and four bits for opcodes. The systems described herein may perform step 202 in a variety of ways. In one example, the systems described herein may identify a CDMA. The term "CDMA" generally refers to any hardware module that is capable of perform register read and write operations and that is configured to interpret a special marker. In some embodiments, a CDMA may manage multiple hardware threads. [0041] At step 204, the systems described herein may send, by a FW module, a command to the HW module directing the HW module to perform a non-register-write operation via the special marker. The term "non-register-write operation" may generally refer to any operation performed by hardware that does not exclusively consist of writing data to a memory register. For example, a non-register-write operation may include a register read operation, a wait-for-done operation, a terminate operation, and/or a debug operation. The systems described herein may perform step 204 in a variety of ways. In one example, FW may send a wait-for-done command to the CDMA. In another example, FW may send a terminate command to the CDMA.
[0042] At step 206, the systems described herein may receive, by the FIW module, the command directing the FIW module to perform the non-register-write operation via the special marker. The systems described herein may perform step 206 in a variety of ways. For example, the CDMA may read the command from a command queue. In some embodiments, the CDMA may check a designated section of memory for commands from FW.
[0043] At step 208, the systems describe herein may perform, by the FIW module, in response to receiving the command, the non-register-write operation signified by the special marker. For example, the CDMA may read data, wait for a thread to complete, and/or terminate operations. In one example, the CDMA may send debug data to FW. For example, upon receiving a debug command signified by a debug opcode in the special marker, the CDMA may output debugging information into external memory that can be used by FW for performance monitoring, analysis, and/or debugging processes. In another example, the CDMA may receive a wait-for-done command and in response, the CDMA may pause operating until detecting that a hardware thread specified by the wait-for-done command has completed.
[0044] FIG. 3 is a block diagram of an example CDMA 302. In one embodiment, CDMA
302 may include a read/write channel 308 and/or a read/write channel 310. In some examples, read/write channel 308 may use an advanced extensible interface (AXI) communication interface to read data from external memory and/or write data to externa memory. In one example, read/write channel 310 may use an advanced microcontroller bus (AFIB) interface to read data from memory registers (e.g., the status register) and/or write data to memory registers. In other embodiments, the systems described herein may use other hardware architecture, interfaces, and/or protocols for write channel 308 and/or read channel 310. In some embodiments, write channel 308 and/or read channel 310 may be capable of executing on multiple threads simultaneously and arbiters 312 and/or 314 may allocate access to write channel 308 and/or read channel 310, respectively. For example, CDMA 302 may be configured to execute CDMA threads 304(1) through 304(n). In one embodiment, CDMA 302 may be configured to execute twelve threads. For example, CDMA 302 may be functioning as a video transcoder and may have twelve threads that each correspond to a different format and/or a different stage of the transcoding process. In some embodiments, CDMA 302 may periodically update a control/status register (CSR) 306 with the current status of CDMA 302. In some embodiments, CDMA 302 may maintain internally the position within each buffer and provide that information at CSR 306. In one example, data in CSR 306 may indicate the address of the current command being executed and/ora pointer in CSR 306 may indicate the position within the current programming sequence buffer. Additionally or alternatively, CDMA 302 may receive instructions from FW via one or more designated registers within CSR 306.
[0045] In some embodiments, the systems described herein may support a programming sequence of a thread that is split across multiple physical buffers in memory. For example, as illustrated in FIG. 4, a CDMA may access memory 402 based on a command queue 404 that issues commands to a CDMA thread 406. Memory 402 may represent various types of memory, including but not limited to double data rate synchronous dynamic random- access memory (DDR SDRAM) and/or any other suitable type of random-access memory. In this example, memory 402 may include three different buffers that are prepared by FW for access by one or more CDMA threads. In some embodiments, this may enable FW to store all the common programming sequences in one buffer to use these sequences across frames for a given thread as well as across threads. For example, the frame width and height for a given video sequence may be unchanged across multiple stages of transcoding. Likewise, the debug programming sequence and/or reset/clear mechanisms may be constant across frames. For all such sequences, FW may store each sequence in one dedicated buffer. By storing reused sequences in buffers in memory, the systems described herein may prevent FW from having to re-program the buffers repeatedly.
[0046] In one embodiment, FW may provide an address pointer and size for the list of commands stored in command queue 404 and the CDMA may fetch the list of commands via the address pointer and size. In some embodiments, the FW may provide the address pointer and size repeatedly, as the buffer may include instructions that are referenced repeatedly, such as the debug programming sequence, clock sequence, reset sequence, and/or interrupt clear sequence.
[0047] In some examples, once the buffers are ready, FW may provide all the pointers to the CDMA through a CSR. In one example, there may be multiple buffers to process, preventing the CDMA from having explicit information about when to send a CDMA interrupt to FW. In one embodiment, the CDMA may provide control to FW to push an enable-interrupt command into the command queue. When this command is received, the CDMA may generate an interrupt after the processing of the corresponding buffer.
[0048] FIG. 5 is a block diagram of an example write engine for a CDMA. In some embodiments, the write engine may only be active if the CDMA is executing register read operations. In one example, the CDMA may issue the read request to memory registers through AFIB to collect data, combine the {address, data} pairs to match bus width, then write the data out in bursts to DDR through AXI. In one embodiment, a CDMA 504 may write to a memory 502. In some examples, CDMA 504 may write data in a variety of formats. For example, CDMA 504 may be configured to transcode videos into different formats. In these examples, CDMA 504 may include write engines 506(1) through 506(n) that each correspond to a format from formats 512(1) through 512(n). In some embodiments, write engines 506(1) through 506(n) may have resources allocated by an arbiter 510 that controls access to direct memory access 508. In one embodiment, CDMA 504 may use an AHB interface to read the corresponding registers and then write the address and data pair to memory 502 via an AXI interface. In some examples, FW may provide one write address per thread for a given CDMA session and CDMA 504 may continue to write the data in that location. In some embodiments, each CDMA thread may have one associated write address for FW to program. In some examples, once CDMA 504 receives an opcode indicating that the last data has been received, CDMA 504 may flush out any partial data to memory 502 and/or returns write-done interrupt to FW.
[0049] FIG. 6 is a block diagram of a read engine for a CDMA. In one embodiment, a
CDMA 608 may read from a read buffer 604 in memory 602 and/or write to a write buffer 606 in memory 602. In some embodiments, CDMA 608 may read from and/or write to a local CDMA buffer 610. For example, CDMA 608 may read and/or process a first set of data at a time 612, a second set of data at a time 614, and/or a third set of data at a time 616. Once local CDMA buffer 610 is full and/or CDMA 608 has received a special marker instructing CDMA 608 to write all data, CDMA 608 may write the data in local CDMA buffer 610 to write buffer 606 in memory 602. In one example, FW may read three registers after each wait-for- done instruction and may finish the session after three frames. In this example, there may be a total of nine register reads and the amount of data written to memory 602 may be 72 bytes. [0050] In some embodiments, the systems described herein may use a sequence identifier (ID) inserted in the special marker to facilitate cross thread dependency and/or efficiency within a single thread. In some examples, a sequence ID may be represented as a continuously incrementing eight bit value. For example, as illustrated in FIG. 7, FW may prepare a scalar 704 (e.g., an Xcoder scalar) for processing three frames through a CDMA with a wait-for-done marker between frames. In one example, the scalar thread ID may be three, so the CDMA may use CDMA thread three. In this example, once all the frames are completed, the CDMA may send the final interrupt to FW indicating that processing is done. In some embodiments, each sequence identifier may be incremented for each done command so that other threads may check the sequence identifier to determine the status of the thread. For example, sequence ID 714 for scalar 704 may be initially set to one, increment to two, and then increment to three as each frame is completed. In this example, FW may receive only one interrupt for three frames processed using a CDMA system, reducing the latency compared systems without a CDMA where FW may receive three interrupts, one after each scalar frame is processed.
[0051] In some examples, the main challenge of cross thread dependency modeling may be the variable processing times of each thread. Some of the threads may finish faster than others, making the synchronization difficult. In order to solve this problem, the systems described herein may use a sequence ID. For example, the systems described herein may store the sequence ID for each scalar in the corresponding CDMA thread. In this example, when a dependent thread is waiting, the thread may compare the thread's own wait- sequence-ID against the stored value from the master thread and may proceed as long as the wait-sequence-ID is greater than or equal to the stored sequence ID.
[0052] In one example, as illustrated in FIG. 8, a CDMA may handle encode (ENC), bit stream (BS), and/or quality metrics (QM) dependent threads. Each done signal from an ENC thread may trigger the processing of the frame by the BS and QM. For example, at time 812, ENC 802 may finish processing a frame and update a sequence ID 808. Based on this update, at time 814, BS 804 and/or QM 806 may begin processing that frame. Meanwhile, ENC 802 may begin processing a new frame. When ENC 802 finishes processing the new frame and updates sequence ID 808 again, at time 816, BS 804 and/or QM 806 may process that frame while ENC 802 moves on to a new frame. In one embodiment, BS 804 may only start processing a new frame if two conditions are met: BS 804 has finished processing the previous frame and ENC 802 has finished processing the new frame. In some examples, the systems described herein may check the current sequence ID for both BS 804 and ENC 802 to determine whether BS 804 is ready to begin processing a new frame.
[0053] In one example, when the CDMA is processing BS 804, the CDMA may identify the wait-for-done marker for ENC 802. The CDMA may internally compare the stored value from ENC 802 to check if it is greater than or equal to the wait-for-done marker and may wait until that condition is met before programming BS 804. In some examples, ENC 802 may not have to wait at each done message for the done to be sampled by all dependent threads. In this example, each thread with variable processing times may not impact other threads. [0054] In some embodiments, a CDMA may terminate processing when certain conditions are met. For example, the CDMA may receive a terminate command from FW. FIG. 9 is a flow diagram of an example method for a CDMA to execute a terminate command. After receiving a terminate command, at step 902, the systems described herein may read the CDMA queue status. If the queue is empty, at step 912, the systems described herein may send a new command or end processing. If the queue is not empty, at step 906, the systems described herein may set a terminate bit to equal one. If the terminate is not complete, the systems described herein may wait. For example, the systems described herein may wait for one or more hardware threads to complete. In some embodiments, the systems described herein may drain prefetched data and/or empty the queue. If the terminate is complete, the systems described herein may, at step 910, set the terminate bit equal to zero. In some embodiments, the CDMA may send a message to FW confirming completion of the terminate operation. The systems described herein may then proceed to step 912 and send a new command or end processing.
[0055] In some embodiments, a CDMA may timeout under certain conditions. In some examples, between the passes or frames, a CDMA may wait for completion from the corresponding HW thread. In order to recover from any hang scenarios, FW may enable timeout behavior and program a timeout value. Upon reaching the timeout value (e.g., waiting for a hardware thread for an amount of seconds, milliseconds, or other measurement of time that matches the timeout value), a CDMA thread may generate a timeout message to send to FW and wait in the same state until receiving a message from FW. In some examples, FW may continue to wait after receiving the timeout message or may issue a terminate command to the CDMA.
[0056] As described above, the systems and methods described herein may improve the efficiency of various computing processes, such as video transcoding, by using a special marker to communicate with a CDMA that receives commands from FW and reads and writes to registers. By storing repeatedly accessed information and command sequences in buffers in memory that can be read by the CDMA via the command queue, the systems described herein may eliminate redundant iterations of programming that same information into buffers by FW in between different sequences. The systems described herein may direct the CDMA via a special marker with different opcodes for different operations, such as debug, terminate, and wait-for-done. Using a wait-for-done command with a sequence ID that specifies a thread may enable the systems described herein to facilitate cross-thread dependency by maintaining and transmitting information about the current status of each thread, enabling threads to wait only for relevant other threads to finish processing rather than having to wait for all threads.
[0057] Example Embodiments
[0058] Example 1: A system for facilitating efficient hardware-firmware interactions may include (i) a group of memory registers, (ii) a hardware module that directly reads from and writes to the memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, and (iii) a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
[0059] Example 2: The system of example 1, where the non-register-write operations include at least one of a register read operation, a wait-for-done operation, and/or a debug operation.
[0060] Example 3: The system of examples 1-2 may further include an address of a predefined special memory register and an operation code.
[0061] Example 4: The system of examples 1-3, where the firmware module prepares a list of commands stored in memory, the firmware module provides at least one address pointer and size for the list of commands to the hardware module, and the hardware module fetches the list of commands via the at least one address pointer and size.
[0062] Example 5: The system of examples 1-4, where the firmware module provides, to the hardware module, a plurality of address pointers that each point to a different segment of a single command in the list of commands.
[0063] Example 6: The system of examples 1-5, where the hardware module stores the at least one address pointer to a memory register within the plurality of memory registers. [0064] Example 7: The system of examples 1-6, where the firmware module provides the at least one address pointer to the hardware module repeatedly during different points in time.
[0065] Example 8: The system of examples 1-7, where the hardware module receives a command to perform a wait-for-done operation, the hardware module pauses operating until detecting that a hardware thread has completed, and the hardware module resumes operating in response to detecting that the hardware thread has completed.
[0066] Example 9: The system of examples 1-8, where the command to perform the wait-for-done operation includes a sequence identifier and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
[0067] Example 10: The system of examples 1-9, where the hardware module receives a command to perform a terminate operation and, in response, the hardware module pauses operating until detecting that at least one hardware thread has completed, drains prefetched data, empties a command queue, and confirms a completion of the terminate operation to the firmware module.
[0068] Example 11: The system of examples 1-10, where the hardware module receives a command from the firmware to perform a debug operation and in response, the hardware module writes data to memory that is accessible to the firmware.
[0069] Example 12: The system of examples 1-11, where the hardware module stores a timeout value that, when reached, prompts the hardware module to pause operating and send a timeout message to the firmware module.
[0070] Example 13: The system of examples 1-12, where the hardware module stores, in at least one memory register within the plurality of memory registers, a current status of the hardware module. [0071] Example 14: A computer-implemented method for facilitating efficient hardware-firmware interactions may include (i) identifying a hardware module that directly reads from and writes to a plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, (ii) sending, by a firmware module, a command to the hardware module directing the hardware module to perform a non-register-write operation via the special marker, (iii) receiving, by the hardware module, the command directing the hardware module to perform the non-register-write operation via the special marker, and (iv) performing, by the hardware module, in response to receiving the command, the non-register-write operation signified by the special marker.
[0072] Example 15: The computer-implemented method of example 14, where the non-register-write operation includes a register read operation and the hardware module performs the register read operation by reading data from a memory register within the plurality of memory registers.
[0073] Example 16: The computer-implemented method of examples 14-15, where (i) the non-register-write operation includes a wait-for-done operation, (ii) the hardware module performs the wait-for-done operation by pausing operating until the hardware module detects that a hardware thread has completed, and (iii) the hardware module resumes operating in response to detecting that the hardware thread has completed.
[0074] Example 17: The computer-implemented method of examples 14-16, where the computer-executable instructions cause the physical processor to the command to perform the wait-for-done operation includes a sequence identifier and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
[0075] Example 18: The computer-implemented method of examples 14-17, where the non-register-write operation includes a debug operation and the hardware module performs the debug operation by writing data to memory that is accessible to the firmware. [0076] Example 19: The computer-implemented method of examples 14-18, where the non-register-write operation includes a terminate operation and the hardware module performs the terminate operation by (i) pausing operating until detecting that at least one hardware thread has completed, (ii) draining prefetched data, (iii) emptying a command queue, and (iv) confirming a completion of the terminate operation to the firmware module. [0077] Example 20: An apparatus may include (i) a plurality of memory registers, (ii) a hardware module that directly reads from and writes to the plurality of memory registers and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations, and (iii) a hardware element configured to execute a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
[0078] As detailed above, the computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configuration, these computing device(s) may each include at least one memory device and at least one physical processor.
[0079] In some examples, the term "memory device" generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer- readable instructions. In one example, a memory device may store, load, and/or maintain one or more of the modules described herein. Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.
[0080] In some examples, the term "physical processor" generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, a physical processor may access and/or modify one or more modules stored in the above-described memory device. Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.
[0081] Although illustrated as separate elements, the modules described and/or illustrated herein may represent portions of a single module or application. In addition, in certain embodiments one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the computing devices or systems described and/or illustrated herein. One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.
[0082] In addition, one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another. For example, one or more of the modules recited herein may receive image data to be transformed, transform the image data into a data structure that stores user characteristic data, output a result of the transformation to select a customized interactive ice breaker widget relevant to the user, use the result of the transformation to present the widget to the user, and store the result of the transformation to create a record of the presented widget. Additionally or alternatively, one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device. [0083] In some embodiments, the term "computer-readable medium" generally refers to any form of device, carrier, or medium capable of storing or carrying computer- readable instructions. Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic- storage media (e.g., solid-state drives and flash media), and other distribution systems. [0084] The process parameters and sequence of the steps described and/or illustrated herein are given by way of example only and can be varied as desired. For example, while the steps illustrated and/or described herein may be shown or discussed in a particular order, these steps do not necessarily need to be performed in the order illustrated or discussed. The various exemplary methods described and/or illustrated herein may also omit one or more of the steps described or illustrated herein or include additional steps in addition to those disclosed.
[0085] The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the scope of the claims. The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the instant disclosure.
[0086] Unless otherwise noted, the terms "connected to" and "coupled to" (and their derivatives), as used in the specification and claims, are to be construed as permitting both direct and indirect (i.e., via other elements or components) connection. In addition, the terms "a" or "an," as used in the specification and claims, are to be construed as meaning "at least one of." Finally, for ease of use, the terms "including" and "having" (and their derivatives), as used in the specification and claims, are interchangeable with and have the same meaning as the word "comprising."

Claims

CLAIMS:
1. A system comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
2. The system of claim 1, where the non-register-write operations comprise at least one of: a register read operation; a wait-for-done operation; or a debug operation.
3. The system of claim 1 or claim 2, wherein the special marker comprises an address of a predefined special memory register and an operation code.
4. The system of claim 1, claim 2 or claim 3, wherein: the firmware module prepares a list of commands stored in memory; the firmware module provides at least one address pointer and size for the list of commands to the hardware module; and the hardware module fetches the list of commands via the at least one address pointer and size.
5. The system of claim 4, wherein one or more of: i. the firmware module provides, to the hardware module, a plurality of address pointers that each point to a different segment of a single command in the list of commands; ii. the hardware module stores the at least one address pointer to a memory register within the plurality of memory registers; and/or iii. the firmware module provides the at least one address pointer to the hardware module repeatedly during different points in time.
6. The system of any one of the preceding claims, wherein: the hardware module receives a command to perform a wait-for-done operation; the hardware module pauses operating until detecting that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed; and preferably wherein: the command to perform the wait-for-done operation comprises a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
7. The system of any one of the preceding claims, wherein: the hardware module receives a command to perform a terminate operation; and in response, the hardware module: pauses operating until detecting that at least one hardware thread has completed; drains prefetched data; empties a command queue; and confirms a completion of the terminate operation to the firmware module.
8. The system of any one of the preceding claims, wherein: the hardware module receives a command from the firmware to perform a debug operation; and in response, the hardware module writes data to memory that is accessible to the firmware.
9. The system of any one of the preceding claims, wherein the hardware module stores a timeout value that, when reached, prompts the hardware module to: pause operating; and send a timeout message to the firmware module; and/or preferably wherein the hardware module stores, in at least one memory register within the plurality of memory registers, a current status of the hardware module.
10. A computer-implemented method comprising: identifying a hardware module that: directly reads from and writes to a plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; sending, by a firmware module, a command to the hardware module directing the hardware module to perform a non-register-write operation via the special marker; receiving, by the hardware module, the command directing the hardware module to perform the non-register-write operation via the special marker; and performing, by the hardware module, in response to receiving the command, the non- register-write operation signified by the special marker.
11. The computer-implemented method of claim 10, wherein: the non-register-write operation comprises a register read operation; and the hardware module performs the register read operation by reading data from a memory register within the plurality of memory registers.
12. The computer-implemented method of claim 10 or claim 11, wherein: the non-register-write operation comprises a wait-for-done operation; the hardware module performs the wait-for-done operation by pausing operating until the hardware module detects that a hardware thread has completed; and the hardware module resumes operating in response to detecting that the hardware thread has completed; and preferably wherein: the command to perform the wait-for-done operation comprises a sequence identifier; and the hardware module facilitates cross-thread dependency by pausing operating until detecting that the hardware thread specified by the sequence identifier has completed.
13. The computer-implemented method of claim 10, claim 11 or claim 12, wherein: the non-register-write operation comprises a debug operation; and the hardware module performs the debug operation by writing data to memory that is accessible to the firmware.
14. The computer-implemented method of any one of claims 10 to 13, wherein: the non-register-write operation comprises a terminate operation; and the hardware module performs the terminate operation by: pausing operating until detecting that at least one hardware thread has completed; draining prefetched data; emptying a command queue; and confirming a completion of the terminate operation to the firmware module.
15. An apparatus comprising: a plurality of memory registers; a hardware module that: directly reads from and writes to the plurality of memory registers; and is configured to interpret a special marker that distinguishes between register write operations and non-register-write operations; and a hardware element configured to execute a firmware module that directs the hardware module to perform operations at least in part by sending the special marker.
PCT/US2022/018060 2021-03-10 2022-02-27 Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions Ceased WO2022192017A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202280019737.0A CN117043747A (en) 2021-03-10 2022-02-27 Apparatus, system, and method for facilitating efficient hardware-firmware interactions

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/198,028 US20220291947A1 (en) 2021-03-10 2021-03-10 Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions
US17/198,028 2021-03-10

Publications (1)

Publication Number Publication Date
WO2022192017A1 true WO2022192017A1 (en) 2022-09-15

Family

ID=81585857

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2022/018060 Ceased WO2022192017A1 (en) 2021-03-10 2022-02-27 Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions

Country Status (3)

Country Link
US (1) US20220291947A1 (en)
CN (1) CN117043747A (en)
WO (1) WO2022192017A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230236839A1 (en) * 2022-01-24 2023-07-27 Stmicroelectronics (Grenoble 2) Sas Device with command list execution and related method
US12554560B2 (en) 2023-05-17 2026-02-17 Bae Systems Information And Electronic Systems Integration Inc. Firmware event stack routing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807113A (en) * 1982-02-26 1989-02-21 Hitachi, Ltd. Microprogrammed control data processing apparatus in which operand source and/or operand destination is determined independent of microprogram control
US20020099532A1 (en) * 2000-12-21 2002-07-25 Traut Eric P. System and method for the logical substitution of processor control in an emulated computing environment
US20060248391A1 (en) * 2005-05-02 2006-11-02 Glover Jeffrey C State machine-based command line debugger
US20110219208A1 (en) * 2010-01-08 2011-09-08 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11194963A (en) * 1997-12-26 1999-07-21 Fujitsu Ltd Command execution monitoring method and command execution monitoring device
US7457897B1 (en) * 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
US7103528B2 (en) * 2002-09-19 2006-09-05 Lsi Logic Corporation Emulated atomic instruction sequences in a multiprocessor system
US7174405B1 (en) * 2003-06-06 2007-02-06 Cisco Technology, Inc. Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation
KR101051703B1 (en) * 2004-08-09 2011-07-25 삼성전자주식회사 Integrated circuit card and integrated circuit card system with suspend / reset function
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US20160062925A1 (en) * 2014-08-28 2016-03-03 Samsung Electronics Co., Ltd. Method and system for managing storage device operations by a host device
US9928079B2 (en) * 2014-09-23 2018-03-27 Dialog Semiconductor (Uk) Limited Conditional processor auto boot with no boot loader when coupled with a nonvolatile memory
US10089212B2 (en) * 2015-07-20 2018-10-02 Toshiba Memory Corporation Memory system, information processing system, and host device outputting debugging information through a host interface
US10198188B2 (en) * 2017-03-09 2019-02-05 Kabushiki Kaisha Toshiba Disk drive that efficiently handles random mixed-R/W command-streams
US10713357B2 (en) * 2017-11-23 2020-07-14 Nicira, Inc. Detecting lateral movement using a hypervisor
CN108563325A (en) * 2018-03-09 2018-09-21 深圳市亿境虚拟现实技术有限公司 virtual reality system data transmission method
US10649776B2 (en) * 2018-06-29 2020-05-12 Western Digital Technologies, Inc. System and method for prediction of multiple read commands directed to non-sequential data
US11086389B2 (en) * 2019-10-29 2021-08-10 Western Digital Technologies, Inc. Method and system for visualizing sleep mode inner state processing
GB2597077B (en) * 2020-07-14 2022-07-27 Graphcore Ltd Clearing register data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807113A (en) * 1982-02-26 1989-02-21 Hitachi, Ltd. Microprogrammed control data processing apparatus in which operand source and/or operand destination is determined independent of microprogram control
US20020099532A1 (en) * 2000-12-21 2002-07-25 Traut Eric P. System and method for the logical substitution of processor control in an emulated computing environment
US20060248391A1 (en) * 2005-05-02 2006-11-02 Glover Jeffrey C State machine-based command line debugger
US20110219208A1 (en) * 2010-01-08 2011-09-08 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GILBERT D A ET AL: "A result forwarding mechanism for asynchronous pipelined systems", ADVANCED RESEARCH IN ASYNCHRONOUS CIRCUITS AND SYSTEMS, 1997. PROCEEDI NGS., THIRD INTERNATIONAL SYMPOSIUM ON EINDHOVEN, NETHERLANDS 7-10 APRIL 1997, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 7 April 1997 (1997-04-07), pages 2 - 11, XP010223488, ISBN: 978-0-8186-7922-3, DOI: 10.1109/ASYNC.1997.587137 *
PINTO S ET AL: "Exploiting Template Metaprogramming to customize an object-oriented operating system", INDUSTRIAL ELECTRONICS (ISIE), 2013 IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, 28 May 2013 (2013-05-28), pages 1 - 6, XP032439400, ISSN: 2163-5137, ISBN: 978-1-4673-5194-2, DOI: 10.1109/ISIE.2013.6563724 *

Also Published As

Publication number Publication date
US20220291947A1 (en) 2022-09-15
CN117043747A (en) 2023-11-10

Similar Documents

Publication Publication Date Title
CN101278265B (en) Method for collecting and analyzing information and system for optimizing code segment
EP0241946A2 (en) Information processing system
US8176221B2 (en) DMA controller
WO2003058432A1 (en) Controlling compatibility levels of binary translations between instruction set architectures
EP2686772B1 (en) Diagnosing code using single step execution
US20240045593A1 (en) Apparatus and method for accessing data, processing apparatus and computer system
WO2018040494A1 (en) Method and device for extending processor instruction set
US12253950B2 (en) Processing apparatus, method and system for executing data processing on a plurality of channels
WO2022192017A1 (en) Apparatus, systems, and methods for facilitating efficient hardware-firmware interactions
US12393450B2 (en) Processing apparatus and system for executing data processing on a plurality of pieces of channel information
US7197590B2 (en) Method and apparatus for connecting LPC bus and serial flash memory
KR101862094B1 (en) Software replayer for transactional memory programs
US9372773B2 (en) User-level hardware branch records
US6772266B2 (en) Detecting transfer of universal serial bus (USB) host controller information from operating system drivers to basic input output system (BIOS)
JP2006209448A (en) Direct memory access control method, direct memory access control device, information processing system, program
KR101735590B1 (en) Transaction extracting apparatus and method thereof
RU2375768C2 (en) Processor and method of indirect reading and recording into register
US20240078115A1 (en) Flush-on-demand processor instruction trace
US20200364052A1 (en) Branch penalty reduction using memory circuit
CN117950836A (en) A RISC-V architecture-based interrupt control system and method
CN112416536B (en) Method for extracting processor execution context and processor
US11880231B2 (en) Accurate timestamp or derived counter value generation on a complex CPU
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
US11042325B2 (en) Speculative bank activate dynamic random access memory (DRAM) scheduler
JP2927751B2 (en) Information processing apparatus, information processing method, and scheduling apparatus

Legal Events

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

Ref document number: 22721914

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 202280019737.0

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2022721914

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2022721914

Country of ref document: EP

Effective date: 20231010

122 Ep: pct application non-entry in european phase

Ref document number: 22721914

Country of ref document: EP

Kind code of ref document: A1